我在我的网站服务器上使用Nginx作为前端代理。 我希望用它在用户现场时将用户重定向到我的网络应用程序,或者当我处于维护模式时将其重定向到维护php页面。
这是我的服务器指令:
server {
listen 443;
return 503;
error_page 503 @maintenance;
root /usr/maintenance;
location @maintenance {
fastcgi_pass php-fpm;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
location / {
proxy_pass https://webapp;
}
}
如果我取消注释return 503
,则会向客户端发送503响应,否则会发送该网络应用。
我的PHP 503错误页面按预期显示,但问题是它有静态资源(css,images,js),当Chrome尝试加载它时,我得到503返回代码。资产位于根目录中。
我该如何解决这个问题?
有没有比评论/取消注释return 503
更好的方法来处理维护和实时模式?
谢谢
答案 0 :(得分:2)
所以这是我的新配置
server {
listen 443;
error_page 503 @maintenance;
root /usr/maintenance;
location @maintenance {
fastcgi_pass php-fpm;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
location ~* \.(css|png|js|jpg|jpeg) {
# The file will be returned
}
location / {
return 503;
proxy_pass https://webapp;
}
}
您可以根据需要随意调整正则表达式\.(css|png|js|jpg|jpeg)
,但白名单文件似乎是个好主意。