Nginx之proxy_pass设置


Nginx很适合用做反向代理[ Reverse-Proxy]的,主要原因有以下几点。

Nginx的高性能特性,可以Hold住更多的连接数。
更加成熟的面向互联网的设计,可以增强后端服务器的安全性。
可以方便的对性能进行横向扩展,增强数据处理能力。


基于以上优点,那么该如何正确的配置Nginx反向代理?

分为两种情况

第一种情况: proxy_pass后面的指定带有URI

被location所匹配的URI将会被proxy_pass后面的URI所替换。举例如下,

location /requested-uri/ {
    proxy_pass http://example.com/backend/;
}

此时,如果请求的连接是, http://proxy-ip/requested-uri/a.html,则传输到后端的路径就会变成,http://example.com/backend/a.html
验证如下:
场景:在tomcat上创建了两个链接,分别是 http://10.2.0.51:8000/zzp/app1 和  http://10.2.0.51:8000/zzp/app
两个链接分别显示不同的内容,app1 和 app2

然后我们在nginx中配置如下:

location /zzy/ {
                proxy_pass http://10.2.0.51:8000/zzp/;
}
这时,我们访问 http://10.2.0.51/zzy/app1 时,就会发现会得到app1 ,说明zzy这个URI被zzp替换了。


第二种情况: proxy_pass后面不带URI时,则URI直接传输给了后端服务器。举例如下,

location /requested-uri/ {
    proxy_pass http://example.com;
}
此时如果请求的连接是, http://proxy-ip/requested-uri/a.html,则传输到后端的路径就会变成,http://example.com/requested-uri/a.html
验证如下:

接上个例子,我们在proxy_pass中不带有uri,此时我们访问zzy这个uri时,就会发现,404错误。

  location /zzy/ {
                proxy_pass http://10.2.0.51:8000;
}

修改配置如下,

        location /zzp/ {
                proxy_pass http://10.2.0.51:8000;
        }
        

访问 http://10.2.0.51/zzp/app1时,就调整好了。



Exceptions:
凡事总有例外,Nginx也是这样。

 特特例: 1.1.12之前的版本,在某些情况下,不带URI的proxy_pass指令会被一些指令所取代。


一般特例:

当location后面带有正则表达式的时候,此时proxy_pass后面不带URI。

因为,如果location在有正则表达式的时候,nginx无法确定哪个部分的URI和表达式匹配。

当URI被用rewrite指令修改的时候,并且同样的配置将被用于处理一个请求。例如,这个好绕口。Boring

location /name/ {
rewrite /name/([^/]+) /users?name=$1 break;
proxy_pass http://127.0.0.1;
}

当prox_pass中使用了变量的时候,将会被以下替换。

location /name/ {
}

总而言之,只要我们不触碰exceptions发生的条件,我们就能达到自己的目的,如果不小心出现exceptions,那就来这里研究吧。

Basic is import , and should be studied in details.











来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29757574/viewspace-2147885/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29757574/viewspace-2147885/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值