Nginx设置404错误页面跳转 一、Nginx在Linux上设置404错误页面1.1 第一种配置情况(跳转网络地址)1.2 第二种配置情况(跳转本地地址)1.3 第三种情况(tomcat未启动时)1.4 第四种情况(proxy_intercept_errors的配置地址可多样)1.5 proxy_intercept_errors和fastcgi_intercept_errors的理解
一、Nginx在Linux上设置404错误页面 Linux版本:Centos 7.4Nginx版本:nginx-1.14.0.tar.gznginx安装目录参考: /usr/local/nginx则是我的安装目录 说明:我Linux服务器上已经在tomcat上部署了一个项目,使用Nginx进行的代理,访问项目不存在的页面时,出现的是Nginx默认的404页面,现在我配置我自己写的404页面进行提示 注意:网上大多数博客写的都只有一种情况,要么就是使用 proxy_intercept_errors on;, 要么就是使用fastcgi_intercept_errors on; 没有说明这两种的区别, 还有也没有说明404.html文件应该放在服务器的什么位置,我在此处优先进行说明, 如果你本地有部署项目,优先使用proxy_intercept_errors on;这个配置进行尝试, 如果没有部署项目,则使用fastcgi_intercept_errors on; 这个进行尝试,也可以两个全加上, 其次404.html文件放在nginx安装目录的html文件夹下 1.1 第一种配置情况(跳转网络地址) error_page配置的是http这种的网络地址
在http下配置 proxy_intercept_errors on;
http { include mime.types; default_type application/octet-stream;proxy_intercept_errors on;... 以下省略在server下配置 error_page
以下三种情况都可以起作用, 可以配置在server第一层的任何位置, 不受影响
也可以配置在location里面,我下面代码注释的地方都是可以配置的
在http下配置 proxy_intercept_errors on;
http { include mime.types; default_type application/octet-stream;proxy_intercept_errors on;... 以下省略在server中配置error_page
说明:我的nginx安装在/usr/local/下
可以配置多种返回码的多个错误页面,也可以同时配置多个错误码跳转一个页面,可以同时存在 如下所示
server { listen 80; server_name www.xxxxxxx.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://search-masteryee;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 20m; }location /upload { root /usr/; index index.html index.htm; } #error_page 404/404.html;# 错误页面的种类也可以是多个# 这里的错误码可以是多个error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # 这里是错误吗也可以是一个error_page 404 /404.html; location = /404.html { root html; } } 1.3 第三种情况(tomcat未启动时) 当我把我的tomcat服务器关掉时,我服务器就没有运行项目了,这时在访问页面,则上述配置没有产生效果,此时则需要添加一个配置fastcgi_intercept_errors on;在http下配置 fastcgi_intercept_errors on;
http { include mime.types; default_type application/octet-stream;fastcgi_intercept_errors on;proxy_intercept_errors on; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' #server中配置如下,将500 502 503 504等状态码一致性跳转404页面
server { listen 80; server_name www.xxxxxxx.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://search-masteryee;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 20m; }location /upload { root /usr/; index index.html index.htm; } #error_page 404/404.html;error_page 500 502 503 504 /404.html;error_page 404 /404.html; location = /404.html { root html; } } 1.4 第四种情况(proxy_intercept_errors的配置地址可多样) proxy_intercept_errors on;这个配置不一定需要放在http下面,也可以是server下,也可以是server的location下 server { listen 80; server_name www.masteryee.com;proxy_intercept_errors on; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://search-masteryee;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 20m; #可以是这里#proxy_intercept_errors on; }location /upload { root /usr/; index index.html index.htm; }error_page 500 502 503 504 /404.html;error_page 404 /404.html; location = /404.html { root html; } } 1.5 proxy_intercept_errors和fastcgi_intercept_errors的理解 配置proxy_intercept_errors on; 时配置的错误页面表示的是当服务器返回的状态码为我们配置的状态码时,我们才进行的页面跳转。如:服务器中没有xxxx.do接口时,我们访问了这个接口,配置了proxy_intercept_errors on;则也会进行页面跳转 如果服务器中没有开启服务,则配置proxy_intercept_errors on; 无用,则需要再添加fastcgi_intercept_errors on; 配置, 这样的话,出现页面错误时也会进行跳转参考1