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

Nginx配置强制域名跳转www及HTTPS时的协议重定义问题排查

Nginx配置冲突问题解析与修复

问题根源

你遇到的protocol options redefined for 0.0.0.0:443错误,核心原因是监听同一个IP:端口的所有server块,listen指令后的协议修饰符必须完全一致。你的配置中,部分server块用listen 443 ssl;,另一部分用listen 443 ssl http2;,这相当于给0.0.0.0:443端口同时定义了两种不同的协议规则,nginx会判定为配置冲突。

修复方案

方案1:统一所有443端口的listen参数

把所有listen 443 ssl;的行修改为listen 443 ssl http2;,确保所有监听443端口的server块使用完全一致的协议选项。修正后的完整配置如下:

server {
        listen 80;
        listen 443 ssl http2;
        server_name example.ie;

        # SSL相关配置
        ssl_certificate /etc/letsencrypt/live/example.ie/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.ie/privkey.pem;
        include /etc/letsencrypt/options-ssl-nginx.conf;
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

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

server {
        listen 80;
        listen 443 ssl http2;
        server_name www.example.ie;

        # 代理相关配置
        ........

        # SSL相关配置
        ssl_certificate /etc/letsencrypt/live/example.ie/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.ie/privkey.pem;
        include /etc/letsencrypt/options-ssl-nginx.conf;
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

server {
        listen 80;
        listen 443 ssl http2;
        server_name example.co.uk;

        # SSL相关配置
        ssl_certificate /etc/letsencrypt/live/example.co.uk/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.co.uk/privkey.pem;
        include /etc/letsencrypt/options-ssl-nginx.conf;
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

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

server {
        listen 80;
        listen 443 ssl http2;
        server_name www.example.co.uk;

        # 代理相关配置
        ........

        # SSL相关配置
        ssl_certificate /etc/letsencrypt/live/example.co.uk/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.co.uk/privkey.pem;
        include /etc/letsencrypt/options-ssl-nginx.conf;
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

方案2:简化配置(推荐)

把所有80端口的跳转逻辑合并到一个server块,减少重复代码,同时统一443端口的listen参数:

# 统一处理所有HTTP请求,跳转到HTTPS的www版本
server {
    listen 80;
    server_name example.ie www.example.ie example.co.uk www.example.co.uk;
    return 301 https://www.$host$request_uri;
}

# 处理example.ie的HTTPS请求,跳转到www版本
server {
    listen 443 ssl http2;
    server_name example.ie;

    ssl_certificate /etc/letsencrypt/live/example.ie/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.ie/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

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

# 处理www.example.ie的HTTPS业务请求
server {
    listen 443 ssl http2;
    server_name www.example.ie;

    # 代理相关配置
    ........

    ssl_certificate /etc/letsencrypt/live/example.ie/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.ie/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

# 处理example.co.uk的HTTPS请求,跳转到www版本
server {
    listen 443 ssl http2;
    server_name example.co.uk;

    ssl_certificate /etc/letsencrypt/live/example.co.uk/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.co.uk/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

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

# 处理www.example.co.uk的HTTPS业务请求
server {
    listen 443 ssl http2;
    server_name www.example.co.uk;

    # 代理相关配置
    ........

    ssl_certificate /etc/letsencrypt/live/example.co.uk/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.co.uk/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

验证修复

修改配置后,执行以下命令验证配置语法,确认无错误后重启nginx服务生效:

nginx -t
systemctl reload nginx

内容的提问来源于stack exchange,提问作者André Silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 21:14:59