如何配置Nginx Proxy Manager默认443 SSL主机重定向至本地服务器并排障
配置路径
/nginx-proxy-manager/data/nginx/*default_host*/site.conf
网络流程
- 互联网客户端在浏览器输入site.com或任意域名(DNS A记录指向777.777.777.777)
- 流量到达局域网内的Nginx Proxy Manager(未匹配到对应站点时生效,WAN地址777.777.777.777,LAN地址192.168.100.36)
- 由Nginx Proxy Manager转发至后端的Apache+Nginx+SSL服务器(192.168.100.37)
当前问题
HTTP协议可正常工作,但HTTPS协议无法运行。Nginx Proxy Manager启动时报错:
Starting nginx ... app_1 | nginx: [emerg] no "ssl_certificate" is defined for the "listen ... ssl" directive in /data/nginx
默认站点配置
server { listen 443 default; listen [::]:443 default; server_name default-host.localhost; include conf.d/include/force-ssl.conf; #注释/取消注释都没区别 location / { proxy_pass $scheme://192.168.100.37:443/; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
问题分析与解决
报错核心原因:你的Nginx默认站点配置中,listen 443 端口的server块启用了SSL监听,但未指定SSL证书和私钥文件路径,Nginx启动时找不到必需的SSL配置项,因此抛出错误。
具体修复步骤:
确认证书位置:
- 使用Nginx Proxy Manager自带默认证书的话,文件通常在
/nginx-proxy-manager/data/nginx/ssl/目录下,名为default.crt(证书)和default.key(私钥)。 - 若使用自定义证书,将你的
.crt/.pem证书文件和.key私钥文件放到Nginx可访问的目录中。
- 使用Nginx Proxy Manager自带默认证书的话,文件通常在
修改默认站点配置:
在server块中添加SSL证书与私钥的配置项,修改后的配置如下:server { listen 443 default ssl; listen [::]:443 default ssl; server_name default-host.localhost; # 新增SSL证书与私钥配置 ssl_certificate /nginx-proxy-manager/data/nginx/ssl/default.crt; ssl_certificate_key /nginx-proxy-manager/data/nginx/ssl/default.key; include conf.d/include/force-ssl.conf; #注释/取消注释都没区别 location / { proxy_pass $scheme://192.168.100.37:443/; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 若后端使用自签名证书,取消注释下方行以跳过验证 # proxy_ssl_verify off; } }注意:如果你的证书路径不是默认路径,替换为实际文件路径即可。
验证配置并重启服务:
- 执行
nginx -t检查配置文件是否存在语法错误 - 确认配置合法后,重启Nginx Proxy Manager服务
- 执行
内容的提问来源于stack exchange,提问作者ывапав
相关产品推荐
相关产品推荐

