nginx 反向代理

当使用nginx代理一个请求时,它会把请求发送到需要代理的服务器上,然后获取响应返回给客户端。它可以代理一个http server(另一个nginx或其它server),也可以代理非http协议 server(如php、python),支持的协议包括FastCGI, uwsgi, SCGI和memcahced.

在location配置中使用proxy_pass进行转发请求:

location /some/path/ {
    proxy_pass http://www.example.com/link/;
}

当请求/some/path/page.html时,会变化http://www.example.com/link/page.html.

除了使用域名个,还可以使用ip,另外也可以指定一组server.

location ~ \.php {
    proxy_pass http://127.0.0.1:8000;
}

对于非http协议:

(1)fastcgi_pass对应FastCGI

(2)uwsgi_pass对应uwsgi

(3)scgi_pass对应SCGI

(4)memcached_pass对应memcached

传递request header

默认情况下,nginx反向代理时会重新定义两个header字段,Host和Connection,并去掉为空值的字段。Host会设备的$proxy_host,Connection会设备为close.

如果要改变header字段,需要使用proxy_set_header指令,它可以在location内或server下或http下。

location /some/path/ {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_pass http://localhost:8000;
}

配置缓存

默认nginx会缓存从被代理的server返回的响应,直到这些响应client接收到为止。缓存对于slow client有优化作用,因为被代理服务器可以很快的把响应发磅给nginx,这样减少被代理的时间浪费。

使用proxy_buffering配置缓存开启,默认on。proxy_buffers指令配置一个请求对应缓存的大小和缓存的块数,响应的第一部分缓存在另一个块中,对应的大小可以通过proxy_buffer_size配置。

location /some/path/ {
    proxy_buffers 16 4k;
    proxy_buffer_size 2k;
    proxy_pass http://localhost:8000;
}

多网卡绑定ip

ocation /app1/ {
    proxy_bind 127.0.0.1;
    proxy_pass http://example.com/app1/;
}

location /app2/ {
    proxy_bind 127.0.0.2;
    proxy_pass http://example.com/app2/;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值