nginx 反向代理学习1

  

nginx反向代理的基本设置的指令:

一、proxy_pass指令

proxy_pass URL;

其中,URL 是要设置的被代理服务器的地址。包含传输协议,主机名或ip地址加端口号、url等要素。

其中协议包括,http:// 或者 https:// 。

1)如:

proxy_pass  http://www.myweb.name/uri;
proxy_pass http://localhost:8000/uri/;
proxy_pass http://unix:/tmp/backend.socket:uri/;

2)如果被代理服务器是一组服务器的话,可以用upstream指令配置后端服务器组。

如:

upstream proxy_svrs
{
    server http://192.168.1.1:8001/uri/;
    server http://192.168.1.2:8001/uri/;
    server http://192.168.1.3.8001/uri/;
}

server
{
    listen 80;
    server_name www.myweb.name;
    location / 
    {
       proxy_pass [http://]proxy_svrs;
    }
}

 ps:

如果upstream里的 高亮部分,http:// 不填写,那么可以在外部标蓝处写上。二者写法选一。

注意:

在使用该指令的过程中,nginx会根据URL中是否包含URI,而作出不同的处理方式。

1、 如果URL中不包含URI,那么Nginx 不会改变原地址URI。

2、如果URL中含有URI,那么会用新的URI替代原来的URI。

举个例子:

片段一:
server
{
    listen 80;
    server_name www.myweb.name;
    location /server/
    {
        proxy_pass http://192.168.1.1;
    }
} 
片段二:
server
{
    listen:80;
    server_name www.myweb.name;
    location /server/
    {
        proxy_pass http://192.168.1.1/loc/;
    }
}

这个时候,如果有个请求,如http://www.myweb.name/server,

该请求在片段一中的结果是:

转向地址为http://192.168.1.1/server

而在片段二中的结果是:

转向地址为http://192.168.1.1/loc/

所以:

如果不想改变原地址的URI,就不要在URL变量中配置URI。

 

3、proxy_pass指令的URL变量末尾是否加斜杠“/”

#配置1:proxy_pass http://192.168.1.1;
#配置2:proxy_pass http://192.168.1.1/;

示例一:这时一个请求过来,

比如:

http://www.myweb.name/index.htm

因为请求的URL中不包含URI,所以,配置1,和配置2的效果是一样的。

转向的URL都是:

http://192.168.1.1/index.htm

 

示例二:这时一个请求过来,

如:

http://192.168.1.1/server/index.htm

由于包含URI,

所以在配置1的时候,proxy_pass 指令中的URL变量不包含URI,所以,Nginx不会改变原地址的URI;

使用配置2的时候,proxy_pass指令中的URL的变量包含URI,"/",所以Nginx服务器会将原地址的URI替换为"/"。

 

转载于:https://www.cnblogs.com/linst/p/10282979.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值