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

Nginx子域名HTTP无法重定向至HTTPS问题求助

排查Nginx子域名HTTP转HTTPS重定向失效问题

嘿,我一眼就看到你的配置里的核心问题了——你把return指令错误地塞进了server_name那一行,这完全不符合Nginx的语法规则,导致重定向逻辑根本没被正确解析执行。

错误原因分析

在你的第一个server块里,这行代码是错误的:

server_name sub.example.com return 301 https://sub.example.com$request_uri;

server_name指令的作用仅仅是指定当前server块匹配的域名,return是独立的Nginx指令,必须单独占一行,不能跟在server_name后面混写。

修正后的配置

把80端口的server块改成下面这样就可以正常触发永久重定向了:

server {
 listen 80;
 listen [::]:80;
 server_name sub.example.com;
 # 单独写return指令,实现HTTP到HTTPS的永久重定向
 return 301 https://sub.example.com$request_uri;
}

额外注意事项

  1. 检查配置语法完整性:你提供的443端口server块代码不完整(结尾没有闭合,FastCGI的配置也没写完),虽然这不会影响重定向,但会导致PHP服务无法正常运行。建议补充完整的PHP处理配置,比如:
# 放在443端口server块的末尾
location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    # 替换成你服务器上实际的PHP-FPM sock路径,比如php8.1-fpm.sock
    fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
  1. 验证配置并重启Nginx:修改配置后,先执行nginx -t检查语法是否正确,确认输出test is successful后,再重启Nginx服务:
# Debian/Ubuntu系统
systemctl restart nginx
# CentOS/RHEL系统
systemctl restart nginx
  1. 确认端口开放:确保Linode实例的防火墙(比如ufw、iptables)已经开放80和443端口,否则HTTP请求根本无法到达Nginx,自然不会触发重定向。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:18:46