是否可以更改在nginx中关闭proxy_pass网关时返回的HTTP状态代码?

ano*_*one 19 proxy http nginx

出于搜索引擎优化的目的,我们想要更改在nginx后面的后端机器由于某种原因而关闭时返回的HTTP状态代码.

我们想将此更改为"503 Service Unavailable".除了向Google/Bing提供一个Retry-After标头之外,还应该在X秒内重试该请求.

这可能通过nginx吗?

我不是在谈论自定义错误页面,而是在标题中返回的状态代码.

Phi*_*ham 35

我认为你不得不建立一个特定的错误页面,但是你可以实现你在找什么,如果你做的.试试这个:

location / {
    proxy_pass http://backend;
    proxy_intercept_errors on;
    error_page 502 503 504 =503 @proxyisdown; # always reply with 503
}

location @proxyisdown {
    add_header Retry-After 500 always;
    index my_pretty_error_page.html; 
}
Run Code Online (Sandbox Code Playgroud)

如果你以这种方式工作,你应该能够返回503(这是指令的=503一部分error_page)和重试后的标题,这样你的访问者将获得格式良好的"oops,我们目前遇到问题,请再试一次在几分钟内"页面而不是空白"503你真的不知道这意味着什么"页面.:)

  • 请参阅http://serverfault.com/questions/418709/nginx-add-header-for-a-50-page,了解完全成熟的方法.它确实需要一个非标准模块,但使用它你可以添加你喜欢的任何标题到503.工作就像一个魅力! (3认同)