首页  >  问答  >  正文

Nginx upstream能否跨机房?

如题,Nginx Upstream的配置能否跨机房设置为外网IP。
亲测是可以的,但是不知道实际环境中会有什么问题。
Nginx upsteam做前端代理的时候是长连接,可能会因为网络不好什么的出问题。
请问有这方面使用或者经验的同学可以回答下么?

PHP中文网PHP中文网2712 天前770

全部回复(2)我来回复

  • 淡淡烟草味

    淡淡烟草味2017-05-16 17:29:09

    我的网站就是跨机房的,一台nginx做反向代理,真正的web服务器在另外一个机房

    做反向代理的nginx配置大概是这样:

    upstream real.sites {
        server 123.123.123.123;
    
        // 用keepalive保存长连接,降低频繁创建连接的开销
        keepalive 16;
    }
    
    proxy_cache_path /path/to/cache levels=1:2 keys_zone=static_cache:100m;
    
    server {
        server_name     www.example.com;
    
        // 把真正的IP地址放到header的X-Forwarded-For里面
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
        proxy_http_version 1.1;
        proxy_set_header Connection "";
    
        proxy_next_upstream http_503;
    
        // 把静态资源缓存起来,减少服务器间数据传输
        location ~ \.(css|js|jpg|png|gif|ico)$ {
            proxy_cache static_cache;
            proxy_pass http://real.sites;
        }
    
        location / {
            proxy_pass http://real.sites;
        }
    }
    

    这种部署方式受机房间网络质量的影响比较大,如果机房间网络给力就妥妥的,nginx本身倒没有制造过什么麻烦。

    其实varnish应该比nginx更适合干这个,奈何我不熟悉varnish,干脆就用nginx搞了。

    回复
    0
  • 巴扎黑

    巴扎黑2017-05-16 17:29:09

    妥妥的。

    回复
    0
  • 取消回复