Nginx反向代理后配置404页面

关键词:proxy_intercept_errors、fastcgi_intercept_errors
 
在网上搜索404配置,有很多配置文章,但都是关于fastcgi_intercept_errors的,不过对我们的项目不起作用。我们的项目使用nginx做反向代理,通过域名区分不同的网站,配置fastcgi_intercept_errors不生效,需要配置proxy_intercept_errors。以下罗列出两种配置方式,供大家参考。
 

1、fastcgi_intercept_errors 配置方式

(1)创建自己的404.html页面

(2)更改nginx.conf在http定义区域加入: fastcgi_intercept_errors on;

(3)更改nginx.conf(或单独网站配置文件,例如在nginx -> sites-enabled下的站点配置文件 ) 中在server 区域加入: error_page 404 = /404.html 或者 error_page 404 = http://www.xxx.com/404.html

(4)更改后重启nginx,,测试nginx.conf正确性: /opt/nginx/sbin/nginx –t

#502 等错误可以用同样的方法来配置。
          error_page 500 502 503 504 = /50x.html;

注意事项:
1、必须要添加:fastcgi_intercept_errors on; 如果这个选项没有设置,即使创建了404.html和配置了error_page也没有效果。fastcgi_intercept_errors 语法: fastcgi_intercept_errors on|off 默认: fastcgi_intercept_errors off 添加位置: http, server, location 默认情况下,nginx不支持自定义404错误页面,只有这个指令被设置为on,nginx才支持将404错误重定向。这里需要注意的是,并不是说设置了 fastcgi_intercept_errors on,nginx就会将404错误重定向。在nginx中404错误重定向生效的前提是设置了fastcgi_intercept_errors on,并且正确的设置了error_page这个选项(包括语法和对应的404页面)
2、不要出于省事或者提高首页权重的目的将首页指定为404错误页面,也不要用其它方法跳转到首页。
3、自定义的404页面必须大于512字节,否则可能会出现IE默认的404页面。例如,假设自定义了404.html,大小只有11个字节(内容为:404错误)

2、proxy_intercept_errors配置方式

http {
    include       mime.types;
    default_type  application/octet-stream;

sendfile        on;
    keepalive_timeout  65;
    #fastcgi_intercept_errors on;
    proxy_intercept_errors on;
    error_page   500 502 503 504 404 403 = http://www.itcast.cn/;

upstream cloud.itcast.cn {
        server localhost:9999;
    }
   
    server {
        listen 80;
        server_name cloud.itcast.cn;
       
        location / {
            proxy_pass http://cloud.itcast.cn;
            index index.html index.htm;
        }
    }

 
参考:https://zhidao.baidu.com/question/1605046558053306027.html
 
 
 
 
 
 
时间: 2024-08-06 11:56:17

Nginx反向代理后配置404页面的相关文章

.Net Core/Framework之Nginx反向代理后获取客户端IP等数据探索

原文:.Net Core/Framework之Nginx反向代理后获取客户端IP等数据探索 公司项目最近出现获取访问域名.端口.IP错误现象,通过排查发现, 之前项目一直通过Nginx自定义Headers信息来获取,但最近运维人员失误操作造成自定义Header信息丢失,造成项目拿不到对应的数据.思前想后,想找找官方有没有关于此类问题通用标准化的解决方案. 一.Nginx配置如下: proxy_redirect off; proxy_set_header Host $host; proxy_set

Nginx反向代理的配置

Chapter: Nginx基本操作释疑 1. Nginx的端口修改问题 2. Nginx 301重定向的配置 3. Windows下配置Nginx使之支持PHP 4. Linux下配置Nginx使之支持PHP 5. 以源码编译的方式安装PHP与php-fpm 6. Nginx多站点配置的一次实践 7. Nginx反向代理的配置 Nginx 作为 web 服务器一个重要的功能就是反向代理.其实我们在前面的一篇文章<Nginx多站点配置的一次实践>里,用的就是 Nginx 的反向代理,这里简单再

关于nginx反向代理后获取不到客户端的ip地址问题

通过查资料后,再去看了看我的配置文件,结果发现我没有如下配置: nginx反向代理配置时,一般会添加下面的配置: proxy_set_header Host $host;      proxy_set_header X-Real-IP $remote_addr;      proxy_set_header REMOTE-HOST $remote_addr;      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; loca

Nginx反向代理websocket配置实例

最近有一个需求,就是需要使用 nginx 反向代理 websocket,经过查找一番资料,目前已经测试通过,本文只做一个记录 复制代码 代码如下: 注: 看官方文档说 Nginx 在 1.3 以后的版本才支持 websocket 反向代理,所以要想使用支持 websocket 的功能,必须升级到 1.3 以后的版本,因此我这边是下载的 Tengine 的最新版本测试的 1.下载 tengine 最近的源码 复制代码 代码如下: wget http://tengine.taobao.org/dow

nginx 反向代理后session失效

今天遇到一个问题: nginx反向代理tomcat locattion / {             proxy_pass   http://192.168.1.12:11080/iloadsdev-web/;             proxy_set_header   Host    $host;             proxy_set_header   Remote_Addr    $remote_addr;             proxy_set_header   X-Real

NGINX反向代理-LANMP配置

实验环境: NGINX                CentOS 7.2x86_64            IP:172.16.253.94 LAMP                 CentOS 6.7x86_64            IP:192.168.1.20 测试端              CentOS 7.2x86_64            IP:172.16.251.138 构建LAMP: [[email protected] ~]# iptables -F[[email 

【netcore基础】ubuntu 16.04 搭建.net core 2.1 linux 运行环境 nginx反向代理 supervisor配置自启动

m今天来整理下netcore在linux(ubuntu)上的运行环境搭建 对应版本 ubuntu 16.04 .net core 2.1 nginx version: nginx/1.10.3 (Ubuntu) supervisor 配置开机重启服务自启动 Supervisorhttp://supervisord.org/是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统.它可以很方便的监听.启动.停止.重启一个或多

nexus 绑定负载均衡nginx反向代理后 遇到的https问题。

1.今天搭建maven私服,下载安装好nexus运行后,通过IP可以直接访问,没有问题,如:http://123.123.123.123:8081 就可以进入主页面.没有任何问题. 2.但是他默认是http协议访问,用他自带原生的方法来搞https又得生成证书 比较麻烦,官方文档也推荐用nginx反向代理服务器来搞https.如下: https://help.sonatype.com/repomanager3/security/configuring-ssl 3.我用阿里云生成了一个SSL证书,

nginx反向代理时配置访问密码

在有些情况下,我们需要对服务器上的某些资源进行限流或者禁止陌生人访问,我们可以通过nginx配置来对url添加访问密码. 效果如下 nginx 开启访问验证在 nginx 下,提供了 ngx_http_auth_basic_module 模块实现让用户只有输入正确的用户名密码才允许访问web内容.默认情况下,nginx 已经安装了该模块.所以整体的一个过程就是先用第三方工具( htpasswd,或者使用 openssl)设置用户名.密码(其中密码已经加过密),然后保存到文件中,接着在 nginx