可以将web.py设置为使用服务器的404页面吗?

时间:2012-03-17 07:30:24

标签: python nginx http-status-code-404 wsgi web.py

我有一个服务器(nginx),它将一些网址发送到静态目录,其他网站发送到web.py wsgi应用。服务器的配置还定义了404页面,当有人试图访问静态目录中的不存在的文件时显示该页面。

但是,有时用户会访问nginx传递给python的url,然后我才意识到它应该是404.此时web.py可以返回自定义错误页面以及正确的状态代码;问题是我希望它返回与服务器为未发送到python的页面所做的相同的404页面。目前python正在手动读取和打印404.html文件,但这似乎非常低效。

那么,有没有办法让python告诉服务器显示自己的404页面?

这是我当前的nginx.conf,删除了注释行。

worker_processes  1;    

events {
    worker_connections  1024;
}

http {
    include            mime.types;
    default_type       application/octet-stream;
    sendfile           on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  light.info;
        root         /www/example.com/html;
        index        index.html;

        location /s/     {}
        location /error/ {}
        location /       {
            fastcgi_pass   127.0.0.1:9001;
            fastcgi_param  REQUEST_URI     $request_uri;
            fastcgi_param  QUERY_STRING    $query_string;
            fastcgi_param  REQUEST_METHOD  $request_method;
            fastcgi_param  REMOTE_ADDR     $remote_addr;
        }

        error_page  404              /error/404.html;
        error_page  403              /error/403.html;
        error_page  500 502 503 504  /error/50x.html;
    }
}

1 个答案:

答案 0 :(得分:0)

你不会让python告诉nginx本身要做什么,你将有nginx拦截404的。

uwsgi_intercept_errors on;正是您所寻找的我认为假设您正在使用uwsgi。如果您可以发布当前配置会很有帮助...