nginx + uwsgi自定义502将无法正常工作

时间:2012-04-01 14:34:50

标签: django nginx

您好我正在尝试在网站上运行自定义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;
}

}

2 个答案:

答案 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糟透了