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

如何在Nginx中同时使用自签名证书与Let's Encrypt Certbot SSL证书

故障根本原因

Nginx的端口匹配优先级高于server_name匹配优先级,当多个server块监听同一个443 SSL端口时:

  • 如果请求的Host头无法匹配任何一个server块的server_name,Nginx会默认把请求转发给该端口下第一个被加载的server块处理
  • 你大概率是把域名对应的443 server块放在了IP对应的443 server块之前,所以访问IP的时候,请求被转发到了域名的server块,使用的是Let's Encrypt颁发的、仅对example.com/www.example.com生效的SSL证书,证书和访问的IP不匹配,浏览器就会提示连接未加密、证书无效。

修复方案

  • 调整配置文件中server块的顺序,把IP对应的443 SSL server块放在域名对应的443 server块之前,确保IP请求能被正确匹配到对应自签名证书的server块
  • 也可以给IP对应的443 server块显式加上default_server标识,强制它成为443端口的默认匹配块,配置修改参考:
server {
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;
    # 剩余原有IP配置保持不变
    include /etc/nginx/snippets/self-signed.conf;
    include /etc/nginx/snippets/ssl-params.conf;
    server_name 123.123.12.123;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/user/djangotemplates;
    }
    location / {
        include /etc/nginx/proxy_params;
        proxy_pass http://unix:/run/gunicorn.sock;
    }
}
  • 修改完成后执行nginx -t测试配置语法无误,再执行systemctl reload nginx重载配置即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 14:45:08