Nginx同服务器同域名下重定向至单个维护页面的配置问题咨询
Nginx同域名重定向到维护页配置方案
该需求完全可以实现,无需额外搭建中间服务器,你之前的配置失败是语法和跳转参数使用错误导致。
现有配置的问题
- 第一种配置:
$scheme:/maintenance-page缺少斜杠,不符合标准URL格式,浏览器无法正确识别跳转目标,因此无法生效。 - 第二种配置:你硬编码了新IP作为跳转主机,因此会跳转到错误的服务器。
正确配置方式
要实现同域名下全站重定向到维护页面,只需要在原有server块中补充如下配置即可,核心是使用Nginx内置变量$host自动获取当前请求的域名/IP,避免硬编码跳转地址,同时要排除维护页本身的请求避免死循环:
server { listen 80; server_name 你的域名或当前服务器IP; # 保留你原有root、index等基础配置不变 # 匹配维护页请求,直接返回页面内容 location = /maintenance-page { root 你的静态文件存放目录路径; # 示例:/usr/share/nginx/html index maintenance-page.html; } # 所有其他请求重定向到维护页 location / { # 维护场景建议用302临时重定向,避免浏览器永久缓存跳转规则 return 302 $scheme://$host/maintenance-page; } }
配置生效步骤
- 执行
nginx -t测试配置语法是否正确,返回success说明配置无错误 - 执行
nginx -s reload重载Nginx配置即可生效
可选优化配置
如果需要允许特定IP(比如内部测试IP)正常访问站点不跳转维护页,可以修改location /规则如下:
location / { # 替换为需要放行的IP/IP段 allow 192.168.1.100; allow 10.0.0.0/24; deny all; return 302 $scheme://$host/maintenance-page; }
内容的提问来源于stack exchange,提问作者iFunction
相关产品推荐
相关产品推荐

