Nginx 不僅可以做反向代理,實現負載均衡。還能用作正向代理來進行上網等功能。正向代理:如果把局域網外的 Internet 想象成一個巨大的資源庫,則局域網中的客戶端要訪 問 Internet,則需要通過代理服務器來訪問,這種代理服務就稱為正向代理。
- 簡單一點:通過代理服務器來訪問服務器的過程 就叫 正向代理。
- 需要在客戶端配置代理服務器進行指定網站訪問
反向代理
反向代理,其實客戶端對代理是無感知的,因為客戶端不需要任何配置就可以訪問。
我們只 需要將請求發送到反向代理服務器,由反向代理服務器去選擇目標服務器獲取數據后,在返 回給客戶端,此時反向代理服務器和目標服務器對外就是一個服務器,暴露的是代理服務器 地址,隱藏了真實服務器 IP 地址。
nginx反向代理配置實例
- 實現效果
打開瀏覽器,在瀏覽器地址欄輸入地址 www.123.com,跳轉到 liunx 系統 tomcat 主頁 面中
- 準備工作
(1)在 liunx 系統安裝 tomcat,使用默認端口 8080,我這里8080被其他應用占用,所以我已修改端口為8081。在conf目錄下的server.xml配置文件中,如下,將port改為 8081,其實下面也有類似的Connector 標簽,但是要看protocol協議為HTTP/1.1的標簽修改即可。
< Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" / >
tomcat 安裝文件放到 liunx 系統中,解壓。
Tomcat的路徑:
/usr/feng/apach-tomcat/tomcat8081下
進入 tomcat 的 bin 目錄中,./startup.sh 啟動 tomcat 服務器。
(2)對外開放訪問的端口 (我這里不需要)
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd –reload
查看已經開放的端口號 firewall-cmd --list-all
(3)在 windows 系統中通過瀏覽器訪問 tomcat 服務器
別忘了開啟tomcat,在bin目錄下,使用 命令:
./startup.sh
- 訪問過程的分析
4、具體配置
a. 第一步 在 windows 系統的 host 文件進行域名和 ip 對應關系的配置
添加內容在 host 文件中
b . 第二步 在 nginx 進行請求轉發的配置(反向代理配置)
5、最終測試
如上配置,我們監聽 80 端口,訪問域名為 www.123.com,不加端口號時默認為 80 端口,故 訪問該域名時會跳轉到 127.0.0.1:8081 路徑上。在瀏覽器端輸入 www.123.com 結果如下:
負載均衡
增加服務器的數量,然后將請求分發到各個服務器上,將原先請求集中到單個服務器上的 情況改為將請求分發到多個服務器上,將負載分發到不同的服務器,也就是我們所說的負 載均衡
客戶端發送多個請求到服務器,服務器處理請求,有一些可能要與數據庫進行交互,服 務器處理完畢后,再將結果返回給客戶端。
這種架構模式對于早期的系統相對單一,并發請求相對較少的情況下是比較適合的,成 本也低。但是隨著信息數量的不斷增長,訪問量和數據量的飛速增長,以及系統業務的復雜 度增加,這種架構會造成服務器相應客戶端的請求日益緩慢,并發量特別大的時候,還容易 造成服務器直接崩潰。很明顯這是由于服務器性能的瓶頸造成的問題,那么如何解決這種情 況呢?
我們首先想到的可能是升級服務器的配置,比如提高 CPU 執行頻率,加大內存等提高機 器的物理性能來解決此問題,但是我們知道摩爾定律的日益失效,硬件的性能提升已經不能 滿足日益提升的需求了。最明顯的一個例子,天貓雙十一當天,某個熱銷商品的瞬時訪問量 是極其龐大的,那么類似上面的系統架構,將機器都增加到現有的頂級物理配置,都是不能 夠滿足需求的。那么怎么辦呢?上面的分析我們去掉了增加服務器物理配置來解決問題的辦法,也就是說縱向解決問題 的辦法行不通了,那么橫向增加服務器的數量呢?這時候集群的概念產生了,單個服務器解 決不了,我們增加服務器的數量,然后將請求分發到各個服務器上,將原先請求集中到單個服務器上的情況改為將請求分發到多個服務器上,將負載分發到不同的服務器,也就是我們 所說的負載均衡
Nginx 負載均衡 配置實例
- 實現效果
瀏覽器地址欄輸入地址
http://208.208.128.122/edu/a.html,負載均衡效果,平均 8081 和 8082 端口中
- 準備工作
a.準備兩臺 tomcat 服務器
準備兩臺 tomcat 服務器,一臺 8081,一臺 8082
上面的反向代理第二個實例中已經配置成功了。但是需要添加點東西,如下哦。
b. 修改一處
在兩臺 tomcat 里面 webapps 目錄中,創建名稱是 edu 文件夾,在 edu 文件夾中創建 頁面 a.html,用于測試。
由于第二個實例中,8082中有了 edu 的文件夾,所以只在8081 文件夾下創建即可。
然后使用在vod文件下使用命令:
cp a.html ../edu/
即可完成,
查看命令
cd ../edu/ # 進入到 edu 目錄下
cat a.html #查看內容
c. 測試頁面
測試URL
http://208.208.128.122:8081/edu/a.html
http://208.208.128.122:8082/edu/a.html
- 在 nginx 的配置文件中進行負載均衡的配置
修改了第一個示例的 配置
- 最終測試
測試url
http://208.208.128.122/edu/a.html
- nginx 分配服務器策略
隨著互聯網信息的爆炸性增長,負載均衡(load balance)已經不再是一個很陌生的話題, 顧名思義,負載均衡即是將負載分攤到不同的服務單元,既保證服務的可用性,又保證響應 足夠快,給用戶很好的體驗。快速增長的訪問量和數據流量催生了各式各樣的負載均衡產品, 很多專業的負載均衡硬件提供了很好的功能,但卻價格不菲,這使得負載均衡軟件大受歡迎, nginx 就是其中的一個,在 linux 下有 Nginx、LVS、Haproxy 等等服務可以提供負載均衡服 務,而且 Nginx 提供了幾種分配方式(策略):
a. 輪詢(默認)
每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器 down 掉,能自動剔除。
配置方式:
b. weight
weight 代表權重, 默認為 1,權重越高被分配的客戶端越多
upstream myserver {
server 208.208.128.122:8081 weight=10; # 在這兒
server 208.208.128.122:8082 weight=10;
}
server {
listen 80;
server_name 208.208.128.122;
location / {
root html;
proxy_pass http://myserver;
index index.html index.htm;
}
c. ip_hash
ip_hash 每個請求按訪問 ip 的 hash 結果分配,這樣每個訪客固定訪問一個后端服務器
upstream myserver {
ip_hash; // 在這兒
server 208.208.128.122:8081 ;
server 208.208.128.122:8082 ;
}
server {
listen 80;
server_name 208.208.128.122;
location / {
root html;
proxy_pass http://myserver;
index index.html index.htm;
}
d. fair(第三方)
fair(第三方),按后端服務器的響應時間來分配請求,響應時間短的優先分配。
upstream myserver {
server 208.208.128.122:8081 ;
server 208.208.128.122:8082 ;
fair; # 在這兒
}
server {
listen 80;
server_name 208.208.128.122;
location / {
root html;
proxy_pass http://myserver;
index index.html index.htm;
}
-
數據
+關注
關注
8文章
7002瀏覽量
88943 -
服務器
+關注
關注
12文章
9123瀏覽量
85328 -
局域網
+關注
關注
5文章
751瀏覽量
46277 -
nginx
+關注
關注
0文章
149瀏覽量
12170
發布評論請先 登錄
相關推薦
評論