zoukankan      html  css  js  c++  java
  • nginx alias 和 root

       上周四,有用户反映线上app中的的某个网页打不开,返回404,地址类似:http://xxx.xxx.com/projectContext/appWeb/page/device/deviceList.html

                背景:由于之前后端项目的重构,所有的请求路径,后端服务器已经不支持/projectContext前缀了,但是为了能兼容老版本的接口,故在nginx中做了路径匹配转发

               原有的nginx配置:

    #对所有静态资源做了分离 规则A
    location ~ .*.(gif|jpg|jpeg|png|bmp|swf|css|js|html)$ {
    root /opt/www/wx_app_static_page/;
    expires 30d;
    }
    #兼容老版/projectContext的请求路径 规则B
    location /projectContext {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://app.com/;
    }

    #所有动态请求动态转发给后端服务器列表 规则C
    location /{
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://app.com/;
    }

         乍一看,没什么问题,html请求确实被匹配到 规则A,但是仔细看,会发现/opt/www/wx_app_static_page/并没有  /projectContext/appWeb/page/device/deviceList.html这个路径,而真正的文件是在/opt/www/wx_app_static_page/appWeb/page/device/deviceList.html下,所以才会404
         找到问题了,开始着手解决;于是想当然的加上下面的配置:

    #匹配/projectContext/appWeb的请求
    location ^~ /projectContext/appWeb/{
    root /opt/www/wx_app_static_page/appWeb/;
    }
         重新加载nginx配置后,再访问上面那个路径,发现还是404,于是开启nginx日志,发现请求的html被定位到/opt/www/wx_app_static_page/appWeb/ projectContext/appWeb/page/device/deviceList.html;  会比正确的路径(/opt/www/wx_app_static_page/appWeb/page/device/deviceList.html) 多上匹配规则的前缀;于是乎,想起nginx还支持alias, alias会把location后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录,正合我意
       于是nginx配置改为:


    location ^~ /projectContext/appWeb/{
    alias /opt/www/wx_app_static_page/appWeb/$1;
    }
      重新加载配置,访问之前的url,发现一切正常。
    总结:

    1:root不会丢弃location后面配置的路径,而alias会丢弃,把当前匹配到的目录指向到指定的目录

    2:使用alias时,目录名后面一定要加"/"

    3:alias只能位于location块中
    ————————————————
    版权声明:本文为CSDN博主「t594362122」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/t594362122/article/details/78328769

  • 相关阅读:
    GFS读后笔记
    BigTable读后笔记
    恢复系统基础理论
    事务基础理论
    ARIES算法简介
    怎么快速构建自己的C/C++程序?——有关编译、静态链接和SCons
    lua学习笔记
    运行时动态伪造vsprintf的va_list
    11月30日站立会议
    11月29号站立会议
  • 原文地址:https://www.cnblogs.com/whm-blog/p/14865933.html
Copyright © 2011-2022 走看看