【问题标题】:Can web.py be set to use the server's 404 page?web.py可以设置为使用服务器的404页面吗?
【发布时间】:2012-04-02 15:22:36
【问题描述】:

我有一个服务器 (nginx),它将一些 url 路由到静态目录,将其他的路由到 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;
    }
}

【问题讨论】:

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


    【解决方案1】:

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

    uwsgi_intercept_errors on; 是您要查找的内容,我认为假设您使用的是uwsgi。如果您可以发布您当前的配置,将会很有帮助...

    【讨论】:

    • 我使用的是 fastcgi - 你推荐使用 uwsgi 吗?我将配置编辑到问题中。
    • 那行得通,谢谢(不幸的是,SO 不会让我说“很棒的评论”)。现在我想知道我是否应该使用 unix 套接字,以及 uwsgi 与 fastcgi 有何不同,但我认为 google 会回答这些问题。
    猜你喜欢
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 2021-10-11
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多