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
相关产品推荐
相关产品推荐

