【nginx常用作反响代理】--特别是网络环境隔离的情况下。访问一台机器只能通过一台代理的proxy才能访问的情况。
但是proxy_pass指令中 "/" 是否加在后端服务器的uri中是有很大的区别的。
如: 一个简单例子
1
2
3
4
5
6
7
8
|
[root@cuizhiliang conf.d]# cat test.conf
server {
listen 80 default_server;
server_name _;
location /test/ {
proxy_pass http://10.59.87.11;
}
}
|
proxy_pass http://10.59.87.11; 和 proxy_pass http://10.59.87.11/; 是有区别的。
在nginx中配置proxy_pass时,如果是按照location匹配路径时, 要注意如果proxy_pass后面的url加了"/"。那就表示的是绝对路径,代理的时候不会加上被location匹配的部分。 如果未加"/" 则会当location匹配的部分都加上。
如请求:
curl http://127.0.0.1/test/index.html
在第一种情况下,被代理的去请求的路径其实就是: http://10.59.87.11/test/index.html
在第二种情况下,被代理的去请求的路径其实就是: http://10.59.87.11/index.html
这个请求访问日志可以在 10.59.87.11 这台机器上去。
用途最简单的代理功能,被请求的一个server_name就代理到另外一台机器去:
server {
listen 80;
server_name test-ops.abc.com;
location / {
proxy_pass http://10.59.72.191;
}
}
被请求的一个server_name代理到一组(upstream 定义好了)服务器中取
upstream ops {
server 10.59.72.191:80;
server 10.59.72.192:80;
ip_hash;
}
server {
listen 80;
server_name ops.abc.com;
location / {
proxy_pass http://ops;
}
}
本文转自残剑博客51CTO博客,原文链接http://blog.51cto.com/cuidehua/1888339如需转载请自行联系原作者
cuizhiliang