无法在 nginx 中显示自定义错误页面

无法在 nginx 中显示自定义错误页面

我正在尝试做什么?

我正在尝试在除我自己的 IP 地址之外的每个 IP 地址(请求我的站点的)上显示自定义维护页面。

问题是什么 ?

nginx 不显示我的自定义维护页面,而是显示默认503 Service Temporarily Unavailable错误消息。

我的 nginx 代码:

...   
location / {          
    if (-f /path/to/maintenance.html){  
        return 501;
    }
    try_files $uri @proxy_to_app;
}         
error_page 501 = @ip_proxy;      
location @ip_proxy {        
    if ($remote_addr != <my_ip>){
        return 503;         
    }
    try_files $uri @proxy_to_app;
}    
error_page 503 /maintenance.html;
location = /maintenance.html {
    root /path/to/parent/directory/of/maintenance.html;
}
location @proxy_to_app {
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Host $http_host;
  proxy_redirect off;
  proxy_pass http://app_server;
}
...

每当我完成网站维护时,我只需将 重命名maintenance.html为其他名称即可恢复我的网站。这会破坏第一个 中的 If 条件location

答案1

最后经过大量测试我找到了一个解决方案:)它是这样的:

location / {                
    try_files /does_not_exist @ip_proxy;
}        
location @ip_proxy {        
    if ($remote_addr != <my_ip>){
        return 503;         
    }
    try_files $uri @proxy_to_app;
}        
error_page 503 = @maintenance;    
location @maintenance {                        
    root /path/to/error_page;
    try_files /maintenance.html @proxy_to_app; 
}

我尝试移入@ip_proxy代码location /但包括我在内的所有 IP 地址都显示维护页面。

相关内容