1Panel 中 OpenResty 设置 443 端口复用
1Panel 中 默认的网站应用不是 Nginx,而是 OpenResty,后者是基于前者进行了扩展,增加了 Lua 脚本支持和模块扩展。
复用目的:使 443 同时支持网页应用和某 R 协议。
1Panel 版本:社区版 v1.10.32-lts
设置步骤
- 修改
/opt/1panel/apps/openresty/openresty/conf/conf.d
中所有监听443
端口的配置,这里修改为8443
。
需要修改的文件一般为00.default.conf
以及所有设置了 https 协议的网站配置文件。 - 在面板中的「网站」标签页中,修改 OpenResty 的配置文件:
主要是在 http 模块上方添加下面内容:
由于 1Panel 中的 OpenResty 是通过 Docker 安装的,并且网络模式默认为 host 模式,因此 stream 模块转发时直接使用 127.0.0.1
即可,如果是 Docker 默认的 bridge 桥接网络模式,那么需要通过特定设置才能转发到宿主机的指定端口(比如使用host.docker.internal
)
stream {
map $ssl_preread_server_name $backend {
偷的域名.apple.com x;
default nginx;
}
upstream x {
# 协议端口 1443
server 127.0.0.1:1443;
}
upstream nginx {
server 127.0.0.1:8443;
}
server {
listen 443 reuseport;
# 有 IPv6 需求可以加上下面这行
# listen [::]:443 reuseport;
proxy_pass $backend;
ssl_preread on;
}
}
# 下面是 http 模块
同时,由于修改了 server 中的端口号,会导致重定向时带上了端口号,通过添加一下设置来解决:
server {
listen 80 ;
listen 8443 ssl http2 ;
server_name example.com;
# 避免重定向时带上 :8443
port_in_redirect off;
# 告诉后端这是 HTTPS
proxy_set_header X-Forwarded-Proto https;
index index.php index.html index.htm default.php default.htm default.html;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
# 其他配置...
}
参考文章:使用 nginx stream 实现共用 443 端口
附上传文件大小设置
设置上传文件大小最大值
上传大小限制
默认情况下网站的可上传配置设置的有点小,可以通过一下配置进行修改:
server {
index index.php index.html index.htm default.php default.htm default.html;
# ...
# 设置客户端最大请求体大小
client_max_body_size 1024M;
# ...
proxy_set_header Host $host;
}
单位可设置为:
- 不带单位,表示字节
k
或者K
,表示千字节m
或者M
,表示兆字节g
或者G
,表示吉字节