您好我正在尝试在网站上运行自定义502页面,但似乎无法使其正常运行。
基本上我正在测试它的方式是我只是停止uwsgi并访问页面,每次我得到默认的nginx 502页面。有人可以向我解释如何使这个工作?我已经参加了一个多星期的比赛,取得了成功。我在public_html中有一个名为502.html的文件,我可以直接使用http://ask.ploy.io/502.html访问它,但只要我停止uwsgi并尝试访问主域http://ask.ploy.io,我就会得到默认的502页面。这是vhost配置:
### nginx vhost conf for ployio
server {
listen 80;
server_name ask.ploy.io www.ask.ploy.io;
access_log /usr/local/apache/domlogs/ask.ploy.io main;
error_log /home/ployio/access-logs/ask.ploy.io debug;
root /home/ployio/public_html;
index index.html index.htm index.php;
location /502.html {
root /home/ployio/public_html;
}
location ~ /\.ht {
deny all;
}
location / {
error_page 404 403 = @uwsgi;
log_not_found off;
error_page 502 /502.html;
root /home/ployio/public_html;
}
location @uwsgi {
internal;
uwsgi_pass unix:/home/ployio/.uwsgi/uwsgi.sock;
include /usr/local/nginx/conf/uwsgi_params;
}
location ~* ^.*\.php$ {
if (!-f $request_filename) {
return 404;
}
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://204.61.223.114:8888;
}
location /cpanel {
rewrite ^/(.*) https://cpanel.ask.ploy.io:2083/$1 permanent;
}
}
答案 0 :(得分:0)
如果502是您想要使用自定义错误页面处理的唯一错误代码,则只需要在该位置具体:
location /502.html {
root /home/ployio/public_html;
}
您当前的位置仅与确切的“/50x.html”路径相匹配,这在您的服务器中确实不存在:http://ask.ploy.io/50x.html
也可以使用nginx变量($ uri或类似的东西)将所有50x错误重定向到该根目录,但是根据您的需要,这应该足够了。
答案 1 :(得分:0)
主要问题在location @uwsgi
部分..它似乎永远不会正确处理502返回..可能是设计?
这是一个有效的配置
server {
listen 80;
server_name ask.ploy.io www.ask.ploy.io;
access_log /usr/local/apache/domlogs/ask.ploy.io main;
error_log /home/ployio/access-logs/ask.ploy.io debug;
root /home/ployio/public_html;
index index.html index.htm index.php;
location / {
uwsgi_pass unix:/home/ployio/.uwsgi/uwsgi.sock;
include /usr/local/nginx/conf/uwsgi_params;
}
error_page 502 503 504 @maintenance;
location @maintenance {
root /home/ployio/public_html_502;
rewrite ^(.*)$ /502.html break;
}
}
确保将502.html放在新的根目录中并在那里引用.. ps .. randall糟透了