FreeBSD安裝配置Nginx反向代理和負載均衡

做者:diegehtml

日期:2012-04-17前端

設置方法簡述:在http{}塊定義負載均衡服務器列表,在server{}塊的location下使用nginx

1、反向代理配置web

()單個反向代理使用vim

1、設置反向代理配置後端

#ee usr/local/etc/nginx/proxy.conf服務器

server {session

        listen  80;                     app

        server_name     www.example.com;負載均衡

        location / {                   

                proxy_pass              http://192.168.1.200:8080;

                proxy_set_header        X-Real-IP $remote_addr;

                proxy_set_header        Host $host;

        }                              

}

2、加載反向代理配置

http{}塊中的第1server{}

include /usr/local/etc/nginx/proxy.conf;

加載反向代理配置

這裏先在server{}塊中

# vim /usr/local/etc/nginx/nginx.conf

(二)多個反向代理使用

在虛擬站點中使用,不一樣功能指向不一樣後端服務器

http{}塊中的第1server{}塊加載虛擬站點配置

include vhosts/*.conf;

# vim /usr/local/etc/nginx/vhosts/www.example.com.conf

   

location /static {

             proxy_pass              http://192.168.1.200:8080;

             proxy_set_header        X-Real-IP $remote_addr;

             proxy_set_header        Host $host;

     }

        

     location /news {

             proxy_pass              http://192.168.1.220:8080;

             proxy_set_header        X-Real-IP $remote_addr;

             proxy_set_header        Host $host;

     }

測試好像沒法訪問http://www.example.com/static/

使用rewrite ^(.*)   http://192.168.1.200:8080; 則能夠

LOG

192.168.1.1 - - [16/Apr/2012:21:50:44 +0800] "GET /static/ HTTP/1.1" 404 205 "-" "Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0"

http://192.168.1.200:8080下有文件目錄static/index.html後能夠訪問。緣由是前端訪問路徑和後端同樣。

若是代理到http://192.168.1.200:8080根目錄下 如何設置

正確設置:將全部/static的請求rewite/,而後再使用代理

     location  /static {

             rewrite ^/static/(.*)$  /$1 break;

             proxy_pass              http://192.168.1.200:8080;

             #proxy_set_header        X-Real-IP $remote_addr;

             #proxy_set_header        Host $host;

             #proxy_redirect   default;

 

     }

朋友介紹在後端也用於和前端同樣的目錄結構,這樣簡單,配置文件也簡單,方便維護,同時節省了rewrite的開銷

例如

                location /bbs/ {
                            proxy_pass    http://192.168.1.200:8099/bbs/;
                            proxy_redirect default ;
                 }

 ()記錄真實的ip地址

代理補充

若是要後端記錄來源地址的真實IP而不是前端代理的IP.若是後端使用nginxweb能夠在nginx配置中

http {

        set_real_ip_from       192.168.1.200;

        real_ip_header         X-Real-IP;

}

對應代理的配置

             proxy_set_header        X-Real-IP $remote_addr;

             proxy_set_header        Host $host;

 

 

2、負載均衡配置

負載均衡就是多個站點作一組反向代理

一、  http {}塊中配置

# vim /usr/local/etc/nginx/nginx.conf

http {

                  

       upstream cluster_server_com {

                 server 172.17.2.192:80 max_fails=2 fail_timeout=30s;

                 server 172.17.2.190:80 max_fails=2 fail_timeout=30s;  

   }

….

}

二、  server{}塊使用前面配置的cluster_server_com,虛擬站點中

# vim /usr/local/etc/nginx/vhosts/www.example.com.conf

server {

                  

                   location / {

                   proxy_pass                         http://cluster_server_com;

                   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;

        }

                   ...

}                

三、  訪問測試

能夠看到是以此輪詢到後端兩臺服務器

4nginxupstream目前支持4種方式的分配

1)、輪詢(默認)

每一個請求按時間順序逐一分配到不一樣的後端服務器,若是後端服務器down掉,能自動剔除。

2)weight

指定輪詢概率,weight和訪問比率成正比,用於後端服務器性能不均的狀況。

2)ip_hash

每一個請求按訪問iphash結果分配,這樣每一個訪客固定訪問一個後端服務器,能夠解決session的問題。

3)fair(第三方)

按後端服務器的響應時間來分配請求,響應時間短的優先分配。

4)url_hash(第三方

upstream cluster_server_com {#定義負載均衡設備的Ip及設備狀態

server 127.0.0.1:9090 down;

server 127.0.0.1:8080 weight=2;

server 127.0.0.1:6060;

server 127.0.0.1:7070 backup;

}

每一個設備的狀態設置爲:

a)

down 表示單前的server暫時不參與負載

b)

weight 默認爲1.weight越大,負載的權重就越大。

c)

max_fails :容許請求失敗的次數默認爲1.當超過最大次數時,返回proxy_next_upstream 模塊定義的錯誤

d)

fail_timeout:max_fails次失敗後,暫停的時間。

e)

backup 其它全部的非backup機器down或者忙的時候,請求backup機器。因此這臺機器壓力會最輕。

相關文章
相關標籤/搜索