资讯专栏INFORMATION COLUMN

nginx location匹配后proxy_pass给后端server后404 一探

harryhappy / 4468人阅读

nginx location匹配后proxy_pass给后端server后404 一探

我们先来看如下一段nginx配置

location /zentaopms {
    proxy_pass http://127.0.0.1:8282;
}

location /zentaopms {
    proxy_pass http://127.0.0.1:8282/;
}

server {
   listen 8282;
    root /home/www/zentaopms/www/;
   location ~ .php {
       fastcgi_pass 127.0.0.1:9000;
       fastcgi_index index.php;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include fastcgi_params;
   }
}

如上代码中location节点proxy_pass 后相差一个/

我们来看一个具体demo

step1-我们要访问一个URL http://somehost/zentaopms/index.php 这其实是禅道的首页

step2-如我们使用这个配置节

location /zentaopms {
     proxy_pass http://127.0.0.1:8282;
}

那么nginx的错误日志里面记录的都是404的错误

step3-为什么会发生404

首先location匹配到后将请求代理到后端8282端口的server,代理到8282 server还是原先的url,此时到了8282 的server,8282server去/home/www/zentaopms/www/zentaopms/下找index.php并由fastcgi协议传送至php中执行,但index.php是在www目录下,因此nginx就直接报404错误

step4- / ‘斜杠’
使用了proxy_pass http://127.0.0.1:8282/;,在最后多了一个/,代表绝对根目录,nginx不会将location中匹配到的路径代理走。因此代理到8282 server时,路径变成了 http://somehost/index.php,这样子交由server 8282去执行,可以找到php文件。

author:tomato
qq:385817098
tel:********
job:php程序员

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39405.html

相关文章

  • nginx(三):反向代理篇

    摘要:反向代理模块何为反向代理接收客户端请求,并把请求交给后端服务器处理,后端服务器处理完成后,响应通过反向代理服务器返回给客户端。作为反向代理服务器经常要配置一组服务器,以实现负载均衡。 1、nginx反向代理模块 何为反向代理?接收客户端请求,并把请求交给后端服务器处理,后端服务器处理完成后,响应通过反向代理服务器返回给客户端。反向代理可实现局域网中的服务器可被公网中的客户端访问,也可实...

    cloud 评论0 收藏0
  • nginx线上运营tips总结

    摘要:前言业务野蛮生长时期,作为一枚,有运营过比较长的一段时间。根据该是否和匹配绝对是否对前端返回。开发人力不足以重构这个接口,为了不影响调用成功率,想都设置为返回成功之类的状态码记录慢日志为提高接口的运营质量,同时也方便定位一些奇怪的问题。 前言 业务野蛮生长时期,作为一枚op,有运营过nginx比较长的一段时间。期间遇到些小问题,这里简单做个总结记录,会不定时更新: 开始扯淡 pr...

    ZoomQuiet 评论0 收藏0
  • 前端nginx使用札记

    摘要:它是一个高性能的和反向代理服务器,同时也可以作为的代理服务器。如果相对域名或参数字符串起作用,可以使用全局变量匹配,也可以使用反向代理。 nginx是什么? nginx是俄罗斯人 Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的一个十分轻量级的HTTP服务器。它是一个高性能的HTTP和反向代理服务器,同时也可以作为IMAP/POP3/SMTP的代理服务器。ngi...

    tianren124 评论0 收藏0
  • nginx配置location总结及rewrite规则写法

    摘要:语法如果相对域名或参数字符串起作用,可以使用全局变量匹配,也可以使用反向代理。不能返回限速,可以通过指令设置如果请求的文件名不存在,则反向代理到。 location正则写法 一个示例: location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location / { # 因为所有的地址都以 / 开...

    hiyang 评论0 收藏0
  • nginx配置location总结及rewrite规则写法

    摘要:语法如果相对域名或参数字符串起作用,可以使用全局变量匹配,也可以使用反向代理。不能返回限速,可以通过指令设置如果请求的文件名不存在,则反向代理到。 1. location正则写法 一个示例: location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location / { # 因为所有的地址都以 / 开...

    zhouzhou 评论0 收藏0

发表评论

0条评论

harryhappy

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<