设为首页收藏本站

亚洲数据论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 242|回复: 0

【教程】 Nginx实现404页面的几种方法,你知道几种?

[复制链接]

567

主题

753

帖子

14

精华

Rank: 7Rank: 7Rank: 7

积分
3701
1701 枚
0 枚
2 枚
发表于 2017-8-21 19:34:26 | 显示全部楼层 |阅读模式

一个网站项目,肯定是避免不了404页面的,通常使用Nginx作为Web服务器时,有以下集中配置方式,一起来看看。


Nginx实现404页面的几种方法,你知道几种?

Nginx实现404页面的几种方法,你知道几种?


第一种:Nginx自己的错误页面


Nginx访问一个静态的html 页面,当这个页面没有的时候,Nginx抛出404,那么如何返回给客户端404呢?


看下面的配置,这种情况下不需要修改任何参数,就能实现这个功能。


  1. server {

  2. listen      80;

  3. server_name  www.test.com;

  4. root   /var/www/test;

  5. index  index.html index.htm;

  6. location / {

  7. }

  8. # 定义错误页面码,如果出现相应的错误页面码,转发到那里。

  9. error_page  404 403 500 502 503 504  /404.html;

  10. # 承接上面的location。

  11. location = /404.html {

  12. # 放错误页面的目录路径。

  13. root   /usr/share/nginx/html;

  14. }

  15. }
复制代码

第二种:反向代理的错误页面


如果后台Tomcat处理报错抛出404,想把这个状态叫Nginx反馈给客户端或者重定向到某个连接,配置如下:


  1. upstream www {

  2. server 192.168.1.201:7777  weight=20 max_fails=2 fail_timeout=30s;

  3. ip_hash;

  4. }

  5. server {

  6. listen       80;

  7. server_name www.test.com;

  8. root   /var/www/test;

  9. index  index.html index.htm;


  10. location / {

  11. if ($request_uri ~* ‘^/$’) {

  12. rewrite .*   http://www.test.com/index.html redirect;

  13. }

  14. # 关键参数:这个变量开启后,我们才能自定义错误页面,当后端返回404,nginx拦截错误定义错误页面

  15. proxy_intercept_errors on;

  16. proxy_pass      http://www;

  17. proxy_set_header HOST   $host;

  18. proxy_set_header X-Real-IP      $remote_addr;

  19. proxy_set_header X-Forwarded-FOR $proxy_add_x_forwarded_for;

  20. }

  21. error_page    404  /404.html;

  22. location = /404.html {

  23. root   /usr/share/nginx/html;

  24. }

  25. }
复制代码

第三种:Nginx解析php代码的错误页面


如果后端是php解析的,需要加一个变量


在http段中加一个变量 fastcgi_intercept_errors on 就可以了。


指定一个错误页面:


  1. error_page    404  /404.html;

  2. location = /404.html {

  3. root   /usr/share/nginx/html;

  4. }
复制代码

指定一个url地址:


  1. error_page 404  /404.html;

  2. error_page 404 = http://www.test.com/error.html;
复制代码



亚洲数据论坛 - 作者版权声明分割线

Respect for the original creation of the hard, the author of : 公众号:Python运维圈  In this thanks!



是失败让我乐观;
是快乐让我冷静.
因为我有一颗和你一样勇敢的心!
支持支持 高兴高兴 淡定淡定 惊呆了惊呆了 给力给力 回帖回帖 生气生气 感谢感谢 路过路过
自动排版 | 高级模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|站点地图|亚洲数据论坛   

GMT+8, 2017-9-23 13:40

©2009-Infinity  Data Forum Asia

快速回复 返回顶部 返回列表