nginx反向代理與負載均衡

之前寫了nginx在linux(CentOS 7.2 )下的安裝與配置 傳送門
這篇實現一下反向代理與負載均衡的配置。

一、幾個基本概念

1、正向代理

比如網站A訪問不了網站B,但C可以訪問B,那我們可以通過訪問C來訪問B,我們明確知道B是什么。

2、反向代理

比如服務器集群中每臺服務器內容都一樣的時候,我們通過第三方服務器來訪問集群,我們并不知道是集群中哪臺服務器為我們提供的內容。

3、nginx通過反向代理實現負載均衡

用戶首先訪問nginx服務器,然后nginx服務器再從服務器集群中選擇壓力較小的服務器,然后將訪問引向該服務器。若服務器集群中某個服務器崩潰,那么從待選服務器列表中刪除該服務器,nginx不會將訪問請求引入該服務器。

4、HTTP Upstream模塊

HTTP Upstream模塊是Nginx服務器的一個重要模塊,實現在輪詢和客戶端ip之間實現后端的負載均衡。
ip_hash指令:如果客戶端已經訪問了集群中的服務器A并登錄,那么第二次請求的時候,會將請求通過哈希算法自動定位到該服務器,而不是重新定位到集群中的一個服務器
server 指定集群中服務器權重(weight)

二、mac下安裝nginx

首先安裝 homebrew ,在終端粘貼如下命令

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安裝homebrew

若安裝失敗 用如下命令

/usr/bin/ruby -e "$(curl -fsSL --insecure https://raw.githubusercontent.com/Homebrew/install/master/install)"

安裝完成后 看是否能找到nginx

brew search nginx
search

發現能找到 開始安裝

brew install nginx #安裝
brew info nginx #安裝完成后查看nginx版本信息
nginx -v #查看版本信息

啟動nginx

nginx #啟動nginx
nginx -s stop  #停止 
nginx -s reload   #重啟 

然后在瀏覽器打開http://localhost:8080/發現啟動成功

nginx啟動成功

二、配置反向代理、負載均衡

打開nginx配置文件

vi /usr/local/etc/nginx/nginx.conf

修改配置項

worker_processes  4; #允許生成的進程數,默認為1
events{
   worker_connections 1024;#最大連接數,默認為512
}
http
{
    upstream test.com {
        #每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題。
        #ip_hash;
        #upstream的負載均衡,weight是權重,可以根據機器配置定義權重。weigth參數表示權值,權值越高被分配到的幾率越大。
        server 47.95.243.254:8089 weight=2;
        server 47.94.168.174:80 weight=3;
    }

    #虛擬主機的配置
    server
    {
        listen 8080;
        #對 "/" 啟用反向代理
        location / {
            proxy_pass http://test.com;
         }
    }
}
//有兩種轉發方式:
//(1)根據域名轉發 需要配置多個http塊 分別有一個 upstream 和一個server里的 location
//(2)根據路徑轉發 可以有多個upstream, 每個upstream  分別對應一個server里的location

測試nginx配置文件是否正確 正確返回success

nginx -t 
測試配置是否正確

如果使用自定義配置文件 執行如下命令

nginx -c /path/to/self.conf #配置文件路徑

配置項對應的頁面分別是


server1

以及


server2

如果不指定 ip_hash,當前配置訪問結果如下,請求5次,有2次落在server1,3次落在server2上


指定weight

如果指定了ip_hash,則以后都落在第一次請求的server


指定ip_hash

指定ip_hash后

~ end

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容