Nginx转发请求

来源:互联网 发布:python哪个版本好用 编辑:程序博客网 时间:2024/05/22 21:54

本文记录在使用Nginx时,转发请求到不同服务器的配置过程。尤其记录了静态资源(js/css)加载路径不正确的问题。参考网址:
http://www.cnblogs.com/AloneSword/p/3673829.html
http://www.server110.com/nginx/201402/6372.html

Nginx配置location

在nginx.conf文件中,配置location可以将请求转发到不同的服务器去。
其中,配置规则如下:
= 开头表示精确匹配
^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
~ 开头表示区分大小写的正则匹配
~* 开头表示不区分大小写的正则匹配
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则
/ 通用匹配,任何请求都会匹配到。

实际配置

   location ^~/springmvc/    {          proxy_pass http://192.168.1.101:8080/springmvc/;   # access_log off;    }

发现到nginx服务器的请求会转发到101上,同时也可以访问到静态资源。

发现的问题

开始配置时,请求转发后,静态资源(css/js)依然从nginx服务器路径找寻,会出现找不到资源问题。经查,发现与配置中请求的url有关。

http://www.cnblogs.com/AloneSword/p/3673829.html中

在nginx中配置proxy_pass时,如果是按照^~匹配路径时,要注意proxy_pass后的url最后的/,当加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。

在此记录一下。

0 0