You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
注册

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

火山引擎 最新活动