You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx配置proxy_pass与SSL重定向及HTTPS不安全问题排查

问题描述

我参考指南配置Nginx以部署Dash应用,无法通过HTTPS正常连接到Web服务器。以下是我的nginx.conf配置文件:

events {
    worker_connections  1024;
}
http {
    server_tokens off;
    charset utf-8;

    # always redirect to https
    server {
        listen 80 default_server;

        server_name _;

        return 301 https://$host$request_uri;
    }

    server {
        listen 443 ssl http2;
        # use the certificates
        ssl_certificate     /etc/letsencrypt/live/{my_domain}/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/{my_domain}/privkey.pem;
        server_name {my_domain};
        root /var/www/html;
        index index.php index.html index.htm;


        location / {
            proxy_pass http://my-dash-app:5000/;
        }

        location ~ /.well-known/acme-challenge/ {
            root /var/www/certbot;
        }
    }
}

其中{my_domain}为实际域名,fullchain.pem和privkey.pem证书文件已生成。在局域网内通过https://localhost可连接,但浏览器提示站点不安全,需添加例外才能加载。请问哪里配置出错了?

问题分析与解决

核心原因

你用https://localhost访问时,浏览器会验证localhost这个域名的证书,但你的Let's Encrypt证书是颁发给{my_domain}的,域名不匹配导致浏览器判定证书无效,触发不安全提示。

解决步骤

  • 使用实际域名访问
    确保局域网内设备和服务器在同一网络,通过修改本地hosts文件添加映射(格式:服务器局域网IP {my_domain}),让设备能解析到你的实际域名,之后用https://{my_domain}访问,证书匹配后浏览器会显示安全连接。

  • 补充SSL安全配置(推荐)
    当前配置缺少基础SSL安全参数,可能影响兼容性和安全性,建议在443端口的server块中添加:

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    
  • 验证证书有效性
    在服务器上执行以下命令,检查证书是否正确关联你的域名:

    openssl x509 -in /etc/letsencrypt/live/{my_domain}/fullchain.pem -text -noout | grep DNS
    

    输出需包含你的{my_domain},若没有说明证书生成时域名有误,需重新申请。

内容的提问来源于stack exchange,提问作者saheed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 03:02:07