nginx中error_page没有生效(nginx+passenger+rails)

应用部署方式为 nginx + passenger + rails

当我想要用nginx来默认处理400以上状态时,发现在rails返回respose之后,nginx不会再次执行error_page(官方介绍该directive在proxy返回response依然会执行),原因在于需要配置 passenger_intercept_errors on ;

nginx.conf 中 server 配置:

    server {
        listen 3443 ssl;
        server_name XXX;
        ssl_certificate /root/ssl/server.crt;
        ssl_certificate_key /root/ssl/server.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers HIGH:!aNULL:!MD5;

        root /var/ror/cas/public;

        passenger_enabled on;
        passenger_intercept_errors on;   #问题根源
        passenger_ruby /usr/local/rvm/gems/ruby-2.3.0/wrappers/ruby;

        access_log /var/ror/logs/access.log;
        error_log /var/ror/logs/error.log debug;

        # redirect server error pages to the static page /40x.html
        error_page 404 /404.html;
        location = /404.html {
        }
        error_page 403 = /403.html;
        location = /403.html {
        }

        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
        }
    }
        

参考: https://www.phusionpassenger.com/documentation/Users%20guide%20Nginx.html#passenger_intercept_errors

时间: 2024-10-12 06:04:33

nginx中error_page没有生效(nginx+passenger+rails)的相关文章

nginx中的超时设置

参考博文: nginx中的超时设置 nginx使用proxy模块时,默认的读取超时时间是60s. 1. send_timeout syntax: send_timeout the time default: send_timeout 60 context: http, server, location Directive assigns response timeout to client. Timeout is established not on entire transfer of ans

Nginx系列教程之三:nginx 必知必会

书接上回,聊一聊nginx的必知必会!!! 前言:从该教程往后,涉及到nginx的功能将越来越生产化,因此某些测试必须是基于web架构平台,所以在看本教程之前,建议先安装好LNMP或者LAMP架构,以便测试验证.其次该技术文档的测试是基于前端nginx反向代理与后端LNMP架构来测试的,后端LNMP主要是提供测试的访问页面而已,重点还是前端Nginx的设置 测试环境:前端代理:OS:CentOS6.5x64hostname:test1.lxm.comip:10.0.10.11 后端LNMP:OS

lnmp 在nginx中配置相应的错误页面error_page

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.co

Nginx 中的 upstream 与 subrequest 机制

概述 Nginx 提供了两种全异步方式与第三方服务进行通信:upstream 和 subrequest.upstream 在与第三方服务器交互时(包括建立 TCP 连接.发送请求.接收响应.关闭 TCP 连接),不会阻塞 Nginx 进程处理其他请求.subrequest 只是分解复杂请求的一种设计模式,它可以把原始请求分解为多个子请求,使得诸多请求协同完成一个用户请求,并且每个请求只关注一个功能.subrequest 访问第三方服务最终也是基于 upstream 实现的. upstream 被

nginx中有关命令和日志切割,配置文件加载的详细阐述

一.Nginx简介 Nginx ("engine x") 是俄罗斯人Igor Sysoev(塞索耶夫)编写的一款高性能的 HTTP 和反向代理服务器.Nginx 已经在俄罗斯最大的门户网站── Rambler Media(www.rambler.ru)上运行了4年时间,同时俄罗斯超过20%的虚拟主机平台采用Nginx作为反向代理服务器.在国内,已经有新 浪博客.新浪播客.搜狐通行证.网易新闻.网易博客.金山逍遥网.金山爱词霸.校内网.YUPOO相册.豆瓣.迅雷看看等多家网站.频道使用

Nginx 中 HTTP模块初始化

概述 在前面的文章< Nginx 配置解析>简单讲解了通用模块的配置项解析,并且大概讲解了HTTP 模块的配置项解析过程,本文更具体的分析 HTTP 模块的初始化过程.HTTP 模块初始化过程主要有:上下文结构初始化.配置项解析.配置项合并.server 相关端口设置. HTTP 模块接口 ngx_http_module_t 结构体 在 Nginx 中,结构体 ngx_module_t 是 Nginx 模块最基本的接口.对于每一种不同类型的模块,都有一个具体的结构体来描述这一类模块的通用接口.

nginx中的正则表达式

1.if指令 所有的nginx内置变量都可以通过if指令和正则表达式来进行匹配,并且根据匹配结果进行一些操作,如下: if ($http_user_agent ~ MSIE) { rewrite ^(.*)$ /msie/$1 break; } if ($http_cookie ~* "id=([^;] +)(?:;|$)" ) { set $id $1; } 使用符号~*和~模式匹配的正则表达式: ~为区分大小写的匹配. ~*不区分大小写的匹配(匹配firefox的正则同时匹配Fir

Nginx中URL不区分大小写

本模块允许在Nginx中直接执行Prel,或者通过SSI调用Perl. 默认是不会编译进Nginx的,如果你要使用,则要在编译安装Nginx指定: ./configure --with-http_perl_module 另外:操作系统中必须安装:Perl5.6.1以上版本 已知问题:     1 ) 如果Perl模块执行长时间操作,例如:DNS查询.数据库查询等,运行Perl脚本的工作进程将一直处于阻塞状态,因此内置的Perl脚本应该非常简单,执行尽可能快.     2)Nginx在通过“Kil

nginx中使用perl模块

转载自:http://www.netingcn.com/nginx-perl.html 如果对于一个绝大部分内容是静态的网站,只有极少数的地方需要动态显示,碰巧你又了解一点perl知识,那么nginx + perl的结合就能很好解决问题.要想nginx支持perl脚本,在编译nginx时候需要如下参数: ./configure --with-http_perl_module 如果make时候出现如下类似错误: Can't locate ExtUtils/Embed.pm in @INC (@IN