Nginx HTTP转HTTPS(含端口、反向代理)问题求助
问题排查与解决方案
核心问题
你的Nginx配置仅在443端口开启了SSL加密,但你访问的是10923这类非标准HTTPS端口,这些端口没有绑定SSL证书,导致浏览器无法建立安全连接。HTTP访问正常是因为你配置了80端口的监听,且HTTP不需要证书验证。
修复方案
根据你的需求(端口不固定),有两种可行思路:
思路1:为固定自定义端口配置SSL(适合端口可提前确定的场景)
如果能提前确定需要使用的自定义端口,直接在Nginx配置中为这些端口添加带SSL的监听规则,示例修改如下:
server { server_name viewer.grieferbot.site; location / { proxy_pass http://127.0.0.1$request_uri; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } listen 80; listen 443 ssl; listen 10923 ssl; # 添加自定义SSL端口,可重复添加多个 ssl_certificate /etc/letsencrypt/live/viewer.grieferbot.site/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/viewer.grieferbot.site/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; }
修改后重启Nginx,确保防火墙开放对应端口。
思路2:使用标准HTTPS端口(推荐,适配动态端口场景)
如果端口每次都不同,无法提前配置,建议直接使用标准443端口访问https://viewer.grieferbot.site,你的现有配置已经默认支持443端口的SSL加密,只需确保:
- 服务器防火墙开放443端口
- 域名DNS解析指向正确的服务器IP
- 应用服务的请求能通过Nginx的443端口正常代理
额外验证步骤
- 检查SSL证书有效性:执行命令
openssl x509 -in /etc/letsencrypt/live/viewer.grieferbot.site/fullchain.pem -text -noout,确认证书域名匹配、有效期正常。 - 测试端口连通性:用
telnet viewer.grieferbot.site 目标端口或curl -v https://viewer.grieferbot.site:目标端口排查端口是否可正常访问。 - 清除浏览器缓存:避免旧连接信息干扰,用隐私模式重新访问测试。
内容的提问来源于stack exchange,提问作者Neo





