Nginx配置:将website.com重定向至https://www.website.com
解决Nginx中
website.com重定向到https://www.website.com的配置问题 你的问题出在80端口的server块逻辑:只有匹配www.website.com的HTTP请求会被重定向,其他域名(比如website.com)会触发最后的return 404,导致访问出错。下面是修正后的完整配置:
步骤1:修改HTTP(80端口)server块
替换原有的80端口配置,让所有HTTP请求无条件重定向到HTTPS的www版本:
server { listen 80; listen [::]:80; server_name website www.website.com website.com; # 统一重定向所有HTTP请求到HTTPS的www域名 return 301 https://www.website.com$request_uri; }
步骤2:处理HTTPS(443端口)的非www请求
为了避免用户直接访问https://website.com时出现证书警告(你的证书仅针对www.website.com),添加一个专门的server块处理非www的HTTPS请求,并重定向到www版本:
# 处理非www的HTTPS请求,跳转至www版本 server { listen [::]:443 ssl ipv6only=on; listen 443 ssl; server_name website.com website; ssl_certificate /etc/letsencrypt/live/www.website.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.website.com/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; return 301 https://www.website.com$request_uri; } # 原有的www版本HTTPS服务配置,保留核心站点逻辑 server { root /var/www/website/html; index index.html index.htm index.nginx-debian.html; server_name www.website.com; location / { try_files $uri $uri/ =404; } listen [::]:443 ssl ipv6only=on; # managed by Certbot listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/www.website.com/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/www.website.com/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot }
验证配置并重启Nginx
- 先检查配置语法是否正确:
sudo nginx -t
- 语法无误后重启Nginx:
sudo systemctl restart nginx
此时访问http://website.com、https://website.com、http://www.website.com都会自动跳转到https://www.website.com,解决之前的404问题。
内容的提问来源于stack exchange,提问作者saturnSam
相关产品推荐
相关产品推荐

