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

Nginx多域名HTTPS配置求助:80端口跳转443配置咨询

Nginx多域名HTTPS配置优化方案

嘿,针对你要实现Nginx支持多域名+HTTPS的需求,我来帮你完善并优化配置思路——先给你捋清楚更简洁高效的配置方式,再上完整代码:

首先,80端口的HTTP跳转不用写多个server块,一个统一的配置就能搞定所有域名的跳转,维护起来更省心:

server {
    listen 80;
    listen [::]:80;
    server_name example.com another.com; # 把所有需要跳转的域名列在这里

    # 自动跳转到对应域名的HTTPS地址,用$host变量避免硬编码
    return 301 https://$host$request_uri;
}

接下来是443端口的HTTPS核心配置,分两种场景给你写:

场景1:多域名共用SAN证书(推荐)

如果你的Let's Encrypt证书是包含多个域名的SAN证书(可以用certbot生成),直接用一个server块就能覆盖所有域名:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name example.com another.com; # 匹配所有需要的域名

    # SSL证书路径(SAN证书包含所有域名,所以用同一个证书文件)
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    # 补全你没写完的安全头配置,强化站点安全性
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

    # SSL优化配置,兼顾安全性和性能
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    # 这里添加你的站点根目录、路由规则等业务配置
    root /var/www/example;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

场景2:每个域名单独使用证书

如果每个域名有独立的Let's Encrypt证书,就分开写server块:

# 第一个域名配置
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    # 安全头和SSL优化同上
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;
    # ...其他安全头配置

    root /var/www/example;
    index index.html;
}

# 第二个域名配置
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name another.com;

    ssl_certificate /etc/letsencrypt/live/another.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/another.com/privkey.pem;

    # 安全头和SSL优化同上
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;
    # ...其他安全头配置

    root /var/www/another;
    index index.html;
}

几个关键提醒:

  • 用$host变量代替硬编码域名,跳转时会自动匹配用户请求的域名,避免出错
  • 如果要生成SAN证书,用certbot命令:certbot certonly --webroot -w /var/www/example -d example.com -d another.com
  • 加上Strict-Transport-Security头,能强制浏览器后续只用HTTPS访问,进一步提升安全性
  • 配置完后一定要用nginx -t检查语法,没问题再执行systemctl reload nginx生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:52:22