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

NGINX配置HTTPS重定向:www.example.ch跳转至example.ch报400错误

问题分析与解决方法

你的问题核心是**www.example.ch的HTTPS请求没有对应的SSL配置**:当前第三个server块仅处理80端口的HTTP请求,当用户访问https://www.example.ch时,Nginx找不到匹配的443端口监听规则,要么匹配到example.ch的server块但证书域名不匹配,导致SSL握手失败返回400错误;要么无默认server直接拒绝连接。

修复步骤

1. 确认SSL证书包含www.example.ch

先检查你的Let's Encrypt证书是否将www.example.ch作为SAN(备用域名)。如果没有,重新申请包含双域名的证书:

certbot certonly --nginx -d example.ch -d www.example.ch

2. 修改Nginx配置,为www.example.ch添加HTTPS监听

把第三个server块修改为同时处理80和443端口请求,并配置SSL证书:

server {
    server_name www.example.ch;

    # 处理HTTP请求,重定向到HTTPS主域名
    listen 80;
    return 301 https://example.ch$request_uri;

    # 处理HTTPS请求,重定向到主域名
    listen 443 ssl;
    ssl_certificate /etc/letsencrypt/live/example.ch/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.ch/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    return 301 https://example.ch$request_uri;
}

也可以拆分成两个独立server块,分别处理不同端口:

# 处理www的HTTP请求
server {
    server_name www.example.ch;
    listen 80;
    return 301 https://example.ch$request_uri;
}

# 处理www的HTTPS请求
server {
    server_name www.example.ch;
    listen 443 ssl;
    ssl_certificate /etc/letsencrypt/live/example.ch/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.ch/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    return 301 https://example.ch$request_uri;
}

3. 验证配置并重启Nginx

修改后先检查配置合法性:

nginx -t

确认无错误后重启Nginx:

systemctl restart nginx

完成后,无论用户访问http://www.example.ch还是https://www.example.ch,都会正确重定向到https://example.ch,且不会出现SSL相关的400错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 14:32:18