cab*_*nga 6 post nginx http-status-code-503
我有一个简单的配置文件,用于维护时自定义503错误页面.相关部分是这样的:
server {
listen 80 default;
root /usr/share/nginx/html;
server_name example.com;
location / {
if (-f $document_root/503.json) {
return 503;
}
}
# error 503 redirect to 503.json
error_page 503 @maintenance;
location @maintenance {
rewrite ^(.*)$ /503.json break;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是Nginx发现任何请求都在静态文件中解析,任何POST,PUT和DELETE请求都得到405(方法不允许)响应.
所以问题是:如何告诉Nginx为任何HTTP方法提供页面服务?
I ran into this today. It seems the issue is due to nginx (like most servers) not letting you POST
to a static file.
The solution is to capture 405 errors in your @503 location block, serving the maintenance page. In addition, you will have to enable @recursiveerrorpages@, since you are first, intentionally, throwing a 503 error, and then the user is throwing a 405 by posting to your static file:
recursive_error_pages on;
if (-f $document_root/system/maintenance.html) {
return 503;
}
error_page 404 /404.html;
error_page 500 502 504 /500.html;
error_page 503 @503;
location @503 {
error_page 405 = /system/maintenance.html;
# Serve static assets if found.
if (-f $request_filename) {
break;
}
rewrite ^(.*)$ /system/maintenance.html break;
}
Run Code Online (Sandbox Code Playgroud)
Source: https://www.onehub.com/blog/2009/03/06/rails-maintenance-pages-done-right/
归档时间: |
|
查看次数: |
2656 次 |
最近记录: |