我有一个服务器(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;
}
}
答案 0 :(得分:0)
你不会让python告诉nginx本身要做什么,你将有nginx拦截404的。
uwsgi_intercept_errors on;
正是您所寻找的我认为假设您正在使用uwsgi
。如果您可以发布当前配置会很有帮助...