生产环境除root_path外路由失效,测试全绿:Nginx-Passenger配置问题
解决生产环境下除root_path外所有路由失效但测试全绿的问题
问题背景
我碰到过一个特别棘手的问题:生产环境里,除了root_path之外的所有路由都没法正常访问,但本地跑的assert_select测试居然全是GREEN,完全没暴露出问题。折腾半天后才发现,根源是Nginx-Passenger的配置错误。
排查过程
一开始我用了一堆默认的nginx.conf配置,对着文件翻来覆去排查,就是找不到确切的错误点。当时配置里已经加了passenger_document_root /var/www/html/mesite/public;这个核心指令,按说逻辑上没问题,但路由失效的问题就是存在。
后来我突然想到,会不会是Nginx里藏着其他没注意到的配置路径在搞鬼?比如之前残留的配置片段、或者某个被include的隐藏配置文件在干扰当前的设置?
解决方法
抱着死马当活马医的心态,我直接重建了所有Nginx配置文件和配置路径——先把旧配置备份好,然后从头开始一步步配置Nginx和Passenger,确保每一个路径、每一条指令都清晰可控。没想到这么操作之后,所有路由都恢复正常了!
内容的提问来源于stack exchange,提问作者Павел Пешеев
相关产品推荐
相关产品推荐

