Nginx 反向代理 [改进中....]

Nginx 反向代理 [改进中....]



[Copy to clipboard] [ - ]
CODE:
<<nginx.conf设置>>
#user  nobody;
worker_processes  4;
error_log  logs/error.log crit;
pid        logs/nginx.pid;

worker_rlimit_nofile 10240;

events {
    use epoll;
    worker_connections  51200;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile    on;
    keepalive_timeout 65;
    tcp_nodelay on;

    # server pool
    upstream bspfrontsvr {
            server 10.10.10.224:80   weight=1;
            server 10.10.10.221:80   weight=1;
    }
   
    upstream bspimgsvr {
            server 10.10.10.201:80   weight=1;
    }
   
    upstream bspstylesvr {
            server 10.10.10.202:80   weight=1;
    }
   
    upstream bsphelpsvr {
            server 10.10.10.204:80   weight=1;
    }
   
    upstream bspwsisvr {
            server 10.10.10.203:80   weight=1;
    }
   
    upstream bspadminsvr {
            server 10.10.10.222:80   weight=1;
    }
   
    upstream bspbuyersvr {
            server 10.10.10.223:80   weight=1;
    }
   
    upstream bspsellersvr {
            server 10.10.10.225:80   weight=1;
    }

    upstream  bsploginsvr  {
            server 10.10.10.220:443  weight=1;
    }

    upstream  bspregistersvr  {
            server 10.10.10.220:80  weight=1;
    }

    log_format  test_com  '$remote_addr - $remote_user [$time_local] "$request" '
                             '$status $body_bytes_sent "$http_referer" "$http_user_agent" ';

    #--------------------------------------------------------------------
    #img.test.com
    server {
        listen       10.10.10.230:80;
        server_name  img.test.com;

        location / {
                        proxy_pass      http://bspimgsvr;

                        include         proxy_setting.conf;

        }
        access_log  logs/img.log  test_com;
    }
   
    #style.test.com
    server {
        listen       10.10.10.230:80;
        server_name  style.test.com;

        location / {
                        proxy_pass      http://bspstylesvr;

                        include         proxy_setting.conf;
        }
        access_log  logs/style.log  test_com;
    }
   
   
    #help.test.com
    server {
        listen       10.10.10.230:80;
        server_name  help.test.com;

        location / {
                        proxy_pass      http://bsphelpsvr;

                        include         proxy_setting.conf;
        }
        access_log  logs/help.log  test_com;
    }
   
   
    #admin.test.com
    server {
        listen       10.10.10.230:80;
        server_name  admin.test.com;

        location / {
                        proxy_pass      http://bspadminsvr;

                        include         proxy_setting.conf;
        }
        access_log  logs/admin.log  test_com;
    }
   
    #buyer.test.com
    server {
        listen       10.10.10.230:80;
        server_name  buyer.test.com;

        location / {
                        proxy_pass      http://bspbuyersvr;

                        include         proxy_setting.conf;
        }
        access_log  logs/buyer.log  test_com;
    }
   
    #seller.test.com
    server {
        listen       10.10.10.230:80;
        server_name  seller.test.com;

        location / {
                        proxy_pass      http://bspsellersvr;

                        include         proxy_setting.conf;
        }
        access_log  logs/seller.log  test_com;
    }

    #wsi.test.com
    server {
        listen       10.10.10.230:80;
        server_name  wsi.test.com;

        location / {
                        proxy_pass      http://bspwsisvr;

                        include         proxy_setting.conf;
        }
        access_log  logs/wsi.log  test_com;
    }

    #www.test.com
    server {
        listen       10.10.10.230:80;
        server_name  www.test.com   *.test.com;


        location ~ ^/NginxStatus/ {
            stub_status on;
            access_log off;
        }

        location / {
                        proxy_pass      http://bspfrontsvr;

                        include         proxy_setting.conf;
        }
        access_log  logs/www.log  test_com;

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }  


    #login.test.com
    server {
        listen       10.10.10.230:443;
        server_name  login.test.com;

        ssl                  on;
        ssl_certificate      cert.pem;
        ssl_certificate_key  cert.key;
        ssl_session_timeout  5m;

        ssl_protocols  SSLv2 SSLv3 TLSv1;
        ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers   on;

        location / {
                        proxy_pass        https://bsploginsvr;

                        include         proxy_setting.conf;
        }
        access_log  logs/login.log  test_com;
    }

    #login.test.com for register
    server {
        listen       10.10.10.230:80;
        server_name  login.test.com;

        location / {
                        proxy_pass        http://bspregistersvr;

                        include         proxy_setting.conf;
        }   
        access_log  logs/register.log  test_com;
    }  

   
}

<<conf/proxy_setting.conf设置>>

                        proxy_redirect          off;
                        proxy_set_header        Host $host;
                        proxy_set_header        X-Real-IP $remote_addr;
                        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

                        client_max_body_size    10m;
                        client_body_buffer_size 128k;
                        proxy_connect_timeout   90;
                        proxy_send_timeout      90;
                        proxy_read_timeout      90;
                        proxy_buffer_size       4k;
                        proxy_buffers           4 32k;
                        proxy_busy_buffers_size 64k;
                        proxy_temp_file_write_size 64k;

兄弟们, 给点意见呀
这东西到底是WEB服务器还是负载均衡器,
还是有负载均衡功能的WEB服务器??
呵呵。。不要鄙视俺。。。


QUOTE:
原帖由 codecraft 于 2008-9-28 11:06 发表
这东西到底是WEB服务器还是负载均衡器,
还是有负载均衡功能的WEB服务器??
呵呵。。不要鄙视俺。。。

nginx既可以做web服务器, 也可以做负载均衡器

比如这里:
         location ~ ^/NginxStatus/ {
            stub_status on;
            access_log off;
         }
是web服务器, 访问http://www.test.com/Nginxstatus/ 是直接访问nginx, 没有将请求分发给后端


而这里
        location / {
                        proxy_pass      http://bspfrontsvr; //这条语句是关键
                        ..........
        }
这里是负载均衡器, 访问http://www.test.com时, 其实是请求会分发到后端http://bspfrontsvr
即http://10.10.10.224或http://10.10.10.221上
最好贴一下自己的想法,意图,想达到什么效果等文字说明,光一个配置文件,实在难以给出意见
nginx的性能怎么样?


QUOTE:
原帖由 coolerfeng 于 2008-9-30 10:50 发表
最好贴一下自己的想法,意图,想达到什么效果等文字说明,光一个配置文件,实在难以给出意见

我想把nginx作为一个负载均衡器, 但机器不多. 因此我用一台nginx主机为
img图片
style样式
help帮助
wsi WSI
www 前台
admin后台
buyer买家
seller卖家
register注册
login登录

等服务器(其实这些服务器有些也是在一台物理主机上)负载均衡.
继续啊
请问楼主,你TEST 过了没:

你文中的配置
login.test.com这一条应该是无法实现的吧

据我所测
upstream +proxy是无法支持https的


也就是proxy_pass        https://bsploginsvr;
这个无法执行,应该是用这个访问出来都是502 gateway timeout

不过我也不敢100%说我的配置是没有错误的

所以如果搂住是可以的话,我就需要向你请教了
看到楼主的配置可行

又把配置试了一下:

发现还真就可以了
之前测试不可行的原因如下:

第一次:
upstream 中取名为为随便取一名字
但没有加443端口

后面使用proxy https

测试失败

后面测试是upstream取名为域名,有加端口
再测试proxy https://XX

还是失败

今天看了楼主的既然可行,那么再看我自己的配置,就想是不我我加了端口,但是我不可以用域名呢

把upstream的名字由域名改成随便不重复的变量,一试,果然可以

明天再继续TEST.不要空欢喜了