nginx反射代理
阅读数:244 评论数:0
跳转到新版页面分类
Linux
正文
当使用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
location /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/;
}