问题背景
家庭宽带申请的公网 IP,80 和 443 端口被封锁,无法直接通过公网访问。希望如果 443 端口可访问,则优先使用。如果 443 端口不可访问,则使用 8443 端口。
配置环境:
- 基于宝塔面板搭建,使用 nginx。
- 监听端口:443(SSL)和 8443(SSL)。
- 启用了 强制 HTTPS,内网 HTTP 请求自动跳转到 HTTPS。
问题:
- 开启强制HTTPS导致非443 端口(如 8443)访问时强制跳转到 443,公网无法使用 8443 提供的 HTTPS 服务。
现象对比
原始规则【宝塔自带】
# HTTP_TO_HTTPS_START
if ($server_port !~ 443) {
rewrite ^(/.*)$ https://$host$1 permanent;
}
# HTTP_TO_HTTPS_END
或
# HTTP_TO_HTTPS_START
set $isRedcert 1;
if ($server_port != 443) {
set $isRedcert 2;
}
if ($uri ~ /\.well-known/) {
set $isRedcert 1;
}
if ($isRedcert != 1) {
rewrite ^(/.*)$ https://$host$1 permanent;
}
# HTTP_TO_HTTPS_END
- 逻辑:请求端口不是443时,会强制跳转至443。
新规则【更改后】
# HTTP_TO_HTTPS_START
# 增加8443端口豁免
if ($server_port !~ (443|8443)) {
rewrite ^(/.*)$ https://$host$1 permanent;
}
# HTTP_TO_HTTPS_END
或
# HTTP_TO_HTTPS_START
set $isRedcert 1;
# 增加8443端口豁免
if ($server_port != (443|8443)) {
set $isRedcert 2;
}
if ($uri ~ /\.well-known/) {
set $isRedcert 1;
}
if ($isRedcert != 1) {
rewrite ^(/.*)$ https://$host$1 permanent;
}
# HTTP_TO_HTTPS_END
- 逻辑:请求端口不是443或8443时,会强制跳转至443。
- 优点:增加端口豁免,443和8443端口不会强制跳转,保持了对多端口的支持。
解决方案
临时方法
- 说明:新增了对 8443 的支持,避免 8443 被强制跳转。
- 手动更改网站的 nginx 配置文件:
- 找到 nginx 配置文件路径(宝塔面板中:网站管理 -> 设置 -> 配置文件)。
- 根据对应原始规则更改为上面提到的新规则,此方法在重新部署证书或重新打开【强制HTTPS】后会被覆盖配置。
永久方法
- 修改宝塔面板的内置规则,虽然部署证书和强制HTTPS不会覆盖配置,但是面板更新后会对更改的.py进行覆盖,尽量避免更新。
- 备份以下文件,避免修改出错:
cp /www/server/panel/mod/project/docker/sites/sslManage.py
/www/server/panel/mod/project/docker/sites/sslManage.py.bak
cp /www/server/panel/mod/project/docker/sites/base.py /www/server/panel/mod/project/docker/sites/base.py.bak
cp /www/server/panel/mod/project/proxy/comMod.py /www/server/panel/mod/project/proxy/comMod.py.bak
- 修改 sslManage.py 文件
- 路径:/www/server/panel/mod/project/docker/sites/sslManage.py,找到 525:527 行,修改规则为:
if ($server_port != (443|8443)) { set $isRedcert 2; }
- 修改 base.py 文件
- 路径:/www/server/panel/mod/project/docker/sites/base.py找到 158 行,修改规则为:
"force_conf": " #HTTP_TO_HTTPS_START\n set $isRedcert 1;\n if ($server_port != (443|8443)) {\n set $isRedcert 2;\n }\n if ( $uri ~ /\.well-known/ ) {\n set $isRedcert 1;\n }\n if ($isRedcert != 1) {\n rewrite ^(/.*)$ https://$host$1 permanent;\n }\n #HTTP_TO_HTTPS_END",
- 修改 comMod.py 文件
- 路径:/www/server/panel/mod/project/proxy/comMod.py,找到 54 行,修改规则为:
"force_conf": " #HTTP_TO_HTTPS_START\n set $isRedcert 1;\n if ($server_port != (443|8443)) {\n set $isRedcert 2;\n }\n if ( $uri ~ /\.well-known/ ) {\n set $isRedcert 1;\n }\n if ($isRedcert != 1) {\n rewrite ^(/.*)$ https://$host$1 permanent;\n }\n #HTTP_TO_HTTPS_END",
- 重启宝塔服务
bt restart







我还没用过宝塔面板咧,都是在直接在服务器里一顿嚯嚯
@ MuXiaoChen🍊 主要是网站太多了,用面板管理方便一点
Having trouble logging into 91club? Is there a specific login game or process I’m missing? Any tips or tricks to get in smoothly? Need login help at 91clublogingame.
Just curious, anyone using 91clubxyz? What’s your experience been like? Trying to get the lowdown before I dive in headfirst. Give me the real scoop and happy playing at 91clubxyz!
Yo! Downloaded the betupapk the other day. Installation was straightforward. Performance is good on my phone, and they have a pretty wide selection of games. No complaints so far! Get the app here: betupapk