nginx从0.8.2开始支持proxy_bind方法,这样就可以启用多个服务来绑定该服务器多个ip,最后再启用一个中心服务来将请求路由到多个ip 上

nginx 实现一个简单的分布式代理服务

(2011-03-03 16:14:51)
标签:

it

分类: Nginx

【转】 nginx 实现一个简单的分布式代理服务

nginx一般用于实现反向代理和负载均衡,但nginx也可实现正向代理。

一个简单的单机配置sample :

server {
        listen 192.168.205.128:8080;
        resolver    192.168.205.2;   #dns address
        access_log /home/loki/workspace/runtimeEnv/nginx/log/access.log;
        error_log /home/loki/workspace/runtimeEnv/nginx/log/error.log;
        location / {
            proxy_pass http://$http_host;

}

 

   这样便部署了一个简单的代理服务器,加上nginx的反向代理便可轻松的实现一个分布式的代理系统;加上nginx强大的rewrite、高并发和nginx的多种负载均衡策略,这种方案堪称完美。这样但这样的配置未免存在一些问题:

常见问题:

1、nginx upstream 目前只支持http 1.0,这意味着nginx和上游服务器之间的链接不能复用;

2、nginx与nginx upstream 建立链接后,nginx不会主动关闭链接,除非timeout或者对方主动关闭链接;

3、某些机器可以虚拟出多个ip,而此种配置方法不能绑定特定的ip; 这个可以试试proxy_bind方法来解决;

4、需要强大的dns服务器,若没有dns cache,不适合做大规模下载的代理服务;

5、某些服务仅仅支持http 1.0, 也就是说返回 responce中的http header中要求是绝对路径;

 

常用的解决办法:

1、若上游服务器全部使用短链接,没有问题;若上游服务器某些应答使用keep-alive,在nginx中重写request header中的connection字段,强制上游服务使用短链接;

2、同1。但得考虑优化一下,减少服务器的TIME_WAIT;

3、nginx从0.8.2开始支持proxy_bind方法,这样就可以启用多个服务来绑定多个ip,最后再启用一个中心服务来将请求路由到多个ip 上;

4、使用自己的dns cache,在request中加入特定字段,如(dnsed_ip),在nginx中对该字段进行解析,最后将代理的请求直接转发到ip上;

5、proxy_redirect 可以帮你做到。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值