如何在nginx中生成用户自定义的"404未找到页面"?
我在我的nginx服务器上部署了一个示例的django项目,使用了gunicorn。我想在用户输入错误的URL时,显示我自己设计的404页面未找到
的HTML页面。我在我的nginx.conf
文件中尝试了这样设置:
server {
listen localhost:8899;
root /home/mulagala/Desktop/projects/28-05-2014/mysite/mysite/templates
access_log /var/log/nginx/example.log;
error_log /var/log/nginx/example.error.log;
location / {
proxy_pass http://127.0.0.1:8060;
}
# redirect server error pages to the static page /40x.html
#
error_page 404 /404.html;
location = /404.html {
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
location /static/ {
autoindex on;
alias /home/mulagala/Desktop/projects/28-05-2014/mysite/static/;
}
}
但是当我输入错误的URL时,仍然看到django默认的消息页面未找到 (404)
,并且显示了我所有的URL。我需要在我的django项目中做什么改变吗?或者还有其他需要注意的地方吗?我哪里出错了?任何帮助都非常感谢。
2 个回答
0
这里有一个Nginx配置的例子,用来显示404
错误页面,这个是用nginx
来处理,而不是用django
自己来处理:
upstream faarco {
server faarco_app:8000;
}
limit_req_zone $binary_remote_addr zone=one:10m rate=50r/s;
server {
client_max_body_size 20m;
listen 80;
location / {
proxy_pass http://faarco;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
proxy_intercept_errors on; # note
error_page 404 /custom_404.html; # note
}
location /static/ {
alias /code/static/;
}
location /media/ {
root /code/;
}
error_page 404 /custom_404.html;
location = /custom_404.html { # note
root /code/static/error_pages;
internal;
}
}
确保/code/static/error_pages/custom_404.html
这个文件和路径是存在的,并且权限设置为755
。
3
你不需要这个 error_page 404
的设置,并且要确保你有 proxy_intercept_errors off;
。如果这两个条件都满足,nginx 就会让应用程序(在这里是 Django)自己返回它的 404 页面。
这个配置文件应该没问题:
server {
listen localhost:8899;
root /home/mulagala/Desktop/projects/28-05-2014/mysite/;
access_log /var/log/nginx/example.log;
error_log /var/log/nginx/example.error.log;
location / {
proxy_pass http://127.0.0.1:8060;
}
location /static/ {
autoindex on;
alias /home/mulagala/Desktop/projects/28-05-2014/mysite/static/;
}
}