之前寫了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