记录一次1Panel配置SSL导致的面板访问失败

这篇具有很好参考价值的文章主要介绍了记录一次1Panel配置SSL导致的面板访问失败。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题描述

今天在使用1Panel配置网站的时候,给域名上传了SSL证书、开启了https访问。

然后面板就进不去了,浏览器报告连接不安全。

记录一次1Panel配置SSL导致的面板访问失败,运维,运维,nginx,ssl

猜测导致问题的原因是,OpenResty把所有访问该域名的请求都重定向到了https。(最后研究发现该猜测错误)

发生这件事有以下几个条件:

  • 正在配置的网站域名和面板域名相同,都是xxx.example.com。
  • 面板先前没有开启HTTPS访问。
  • 配置HTTPS时选择了HTTP自动访问HTTPS(如图)
  • 配置完成后对https://xxx.example.com进行了访问

记录一次1Panel配置SSL导致的面板访问失败,运维,运维,nginx,ssl

经过研究发现,其实这是浏览器HSTS(HTTP Strict Transport Security)导致的问题。
直接原因是1Panel在OpenResty配置文件中为我们默认添加了如下的响应头:

add_header Strict-Transport-Security "max-age=31536000"; 

我们在首次访问http://xxx.example.com以后,OpenResty会通过如下指令重定向到https://xxx.example.com/

if ($scheme = http) {
    return 301 https://$host$request_uri;
}

301重定向访问https后,浏览器就会收到上述的Strict-Transport-Security Header,并记录下来,有效期是一年。

下次使用HTTP协议访问xxx.example.com域名,浏览器就会自动进行307重定向到HTTPS。而前面提到,面板没有开启HTTPS,导致面板无法进入。

你甘心让自己的面板持续一年无法访问吗?如果不是的话,就看看下面的修复步骤吧😂

修复步骤

1、移除该域名的HSTS记录

对于Chrome,可以访问chrome://net-internals/#hsts;

对于Edge,可以访问edge://net-internals/#hsts;

对于其它浏览器,可以自行搜索一下在哪配置HSTS~

找到Delete字眼,输入域名,按下Delete按钮,删除记录!

记录一次1Panel配置SSL导致的面板访问失败,运维,运维,nginx,ssl

删除完成后,面板就可以正常访问了!

但是,还没完!

2、方案1:立即给面板添加https访问(最优)

只需在1Panel→面板设置→安全→HTTPS,开启并选择之前传过的证书就好。

设置完以后就高枕无忧了,面板也安全了,也不会再因为上述问题导致无法访问。

记录一次1Panel配置SSL导致的面板访问失败,运维,运维,nginx,ssl

至此,问题解决。

2、方案2:删除Strict-Transport-Security响应头

删除响应头意味着以后的HTTP访问都需要经过一次301重定向,不推荐。

当然,如果确实有同域名不同端口的服务(比如面板)不想/无法启用https访问,那也只能这样了。

① 修改配置文件/opt/1panel/apps/openresty/conf/conf.d/xxx.example.com.conf 如下:

# ...
ssl_prefer_server_ciphers on; 
ssl_session_cache shared:SSL:10m; 
ssl_session_timeout 10m;
# 注释掉下面这行
# add_header Strict-Transport-Security "max-age=31536000"; 
error_page 497 https://$host$request_uri; 
proxy_set_header X-Forwarded-Proto https; 
# ...

② 重载OpenResty服务,详见附录:重载OpenResty服务

附录

(错误的)修改配置文件

警告:此步骤是多余的,是因为刚开始自己对这个问题的理解不够透彻。保留在此只是为了记录在哪修改、Nginx如何进行多条件判断。

1Panel的OpenResty是在容器中运行的,文件持久化保存在/opt/1panel/apps/openresty/

我们需要手动修改配置文件,找到/opt/1panel/apps/openresty/conf/conf.d/xxx.example.com.conf ,修改配置文件如下:

# 如此写是因为,nginx的配置不支持&&和嵌套if
# 当http且80端口时,才强制https
set $flag 0;
if ($scheme = http) {
    set $flag "${flag}1";
}
if ($server_port = 80) {
    set $flag "${flag}2";
}
if ($flag = 012) {
    return 301 https://$host$request_uri;
}

# 以下的原来的配置
# if ($scheme = http) {
#     return 301 https://$host$request_uri;
# }

其实1Panel添加的server配置块里是有指定listen 80;的,其它端口不会访问这个server块,在此问题中并不需要这样子操作。

重载OpenResty服务

提示:执行docker命令,如果不是root用户,记得加上sudo~

① 首先,使用docker ps | grep -i openresty查看容器的名称/ID

$ docker ps | grep -i openresty

记录一次1Panel配置SSL导致的面板访问失败,运维,运维,nginx,ssl

第一串字符是容器ID、1Panel开头的是容器名称,这俩都能用作容器的标识

② 进入容器,执行命令:

# 进入容器CONTAINER_ID的命令行
$ docker exec -it CONTAINER_ID /bin/bash # docker exec -it 2931c7b68ebc /bin/bash

# 检查配置文件确认配置修改正确
$ openresty -t
# nginx: the configuration file /usr/local/openresty/nginx/conf/nginx.conf syntax is ok
# nginx: configuration file /usr/local/openresty/nginx/conf/nginx.conf test is successful

# 见到ok字样后重载配置文件, 立即生效;如果没有ok, 说明配置文件有问题, 根据提示修改!
$ openresty -s reload

至此,服务重载完成。文章来源地址https://www.toymoban.com/news/detail-821590.html

到了这里,关于记录一次1Panel配置SSL导致的面板访问失败的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何在Linux上部署1Panel面板并远程访问内网Web端管理界面

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器,包括主机监控、文件管理、数据库管理、容器管理等 下面我们介

    2024年02月03日
    浏览(42)
  • 如何在Linux上部署1Panel运维管理面板并实现无公网ip远程访问

    1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器,包括主机监控、文件管理、数据库管理、容器管理等 下面我们介绍在Linux 本地安装1Panel 并结合cpolar 内网穿透工具实现远程访问1Panel 管理界面 执行如下命令一键安装 1Panel: 安

    2024年02月20日
    浏览(68)
  • 如何在Linux上部署1Panel运维管理面板并远程访问内网进行操作

    1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器,包括主机监控、文件管理、数据库管理、容器管理等 下面我们介绍在Linux 本地安装1Panel 并结合cpolar 内网穿透工具实现远程访问1Panel 管理界面 执行如下命令一键安装 1Panel: 安

    2024年02月04日
    浏览(44)
  • 如何在Linux上部署1Panel运维管理面板并远程访问内网Web端管理界面

    1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器,包括主机监控、文件管理、数据库管理、容器管理等 下面我们介绍在Linux 本地安装1Panel 并结合cpolar 内网穿透工具实现远程访问1Panel 管理界面 执行如下命令一键安装 1Panel: 安

    2024年02月05日
    浏览(51)
  • 自动化控制面板-1Panel

    官网地址 1Panel 可以实现: 快速建站、高效管理、安全可靠、一键备份、应用商店 快速建站:深度集成 Wordpress 和 Halo,域名绑定、SSL 证书配置等一键搞定; 高效管理:通过 Web 端轻松管理 Linux 服务器,包括应用管理、主机监控、文件管理、数据库管理、容器管理等; 安全

    2024年01月25日
    浏览(43)
  • 与宝塔面板相比,1Panel 面板的优势是什么?

    宝塔免费版用户,1panel 内测用户,从 v2ex 看到 1Panel 发的帖,等了几个月进了内测群,现在用了半个多月,谈一下自己的感受: 安装速度快 1Panel 安装只需要一条命令,10几分钟就可以完成安装,主要是安装 docker 、docker-compose 和 1panel 的二进制文件,二进制文件只有50M不到,

    2024年02月11日
    浏览(45)
  • 11月,1Panel开源面板项目收到了这些评论

    2023年11月24日,1Panel开源面板项目(https://github.com/1Panel-dev)发布了题为《10月,1Panel开源面板收到了这些评论》的社区评论合集。在该文章的评论区,很多社区用户跟帖发表了自己对1Panel开源项目的使用感受和意见建议。我们将本轮收集的精彩社区评论收集整理如下。 感谢广

    2024年02月03日
    浏览(37)
  • 1panel可视化Docker面板安装与使用

    官网地址1Panel - 现代化、开源的 Linux 服务器运维管理面板 文章目录 目录 文章目录 前言 一、环境准备 二、使用步骤 1.安装命令 2.一些命令  3.使用  总结 虚拟机centos 已经安装好docker和 Docker Compose 或者都没安装 1panel会帮你自动安装 curl -sSL https://resource.fit2cloud.com/1panel/pack

    2024年02月03日
    浏览(44)
  • Linux系统之部署Linux管理面板1Panel

    1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。 快速建站:深度集成 Wordpress 和 Halo,域名绑定、SSL 证书配置等一键搞定; 高效管理:通过 Web 端轻松管理 Linux 服务器,包括应用管理、主机监控、文件管理、数据库管理、容器管理等; 安全可靠:最小漏洞暴露面,提

    2023年04月21日
    浏览(42)
  • 操作教程|通过1Panel开源Linux面板快速安装DataEase

    DataEase开源数据可视化分析工具(dataease.io)的在线安装是通过在服务器命令行执行Linux命令来进行的。但是在实际的安装部署过程中,很多数据分析师或者业务人员经常会因为不熟悉Linux操作系统及命令行操作方式,在安装DataEase的过程中遇到一些障碍。 针对这种情况,用户

    2024年02月11日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包