Nginx tomcat伺服器 負載均衡

2022-03-05 02:33:39 字數 3879 閱讀 8284

反向**(reverse proxy)方式是指以**伺服器來接受internet上的連線請求,然後將請求**給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求連線的客戶端,此時**伺服器對外就表現為乙個反向**伺服器。

1、熱部署

我個人覺得這個很不錯。在master管理程序與worker工作程序的分離設計,使的nginx具有熱部署的功能,那麼在7×24小時不間斷服務的前提下,公升級nginx的可執行檔案。也可以在不停止服務的情況下修改配置檔案,更換日誌檔案等功能。

2、可以高併發連線

這是乙個很重要的乙個特性!在這乙個 網際網路 快速發展, 網際網路 使用者數量不斷增加,一些大公司、**都需要面對高併發請求,如果有乙個能夠在峰值頂住10萬以上併發請求的server,肯定會得到大家的青睞。理論上,nginx支援的併發連線上限取決於你的記憶體,10萬遠未封頂。

3、低的記憶體消耗

在一般的情況下,10000個非活躍的http keep-alive 連線在nginx中僅消耗2.5m的記憶體,這也是nginx支援高併發連線的基礎。

4、處理響應請求很快

在正常的情況下,單次請求會得到更快的響應。在高峰期,nginx可以比其他的web伺服器更快的響應請求。

5、具有很高的可靠性

nginx是乙個高可靠性的web伺服器,這也是我們為什麼選擇nginx的基本條件,現在很多的**都在使用nginx,足以說明nginx的可靠性。高可靠性來自其核心框架**的優秀設計、模組設計的簡單性;並且這些模組都非常的穩定。

**伺服器通常分為兩類,即****(forward proxy)伺服器和反向**(reverse proxy)伺服器。****伺服器又通常簡稱為**伺服器,我們常提到的**伺服器就指的是****伺服器。

****伺服器

普通的****伺服器是客戶端與原始伺服器之間的乙個中間伺服器。為了從原始伺服器獲取內容,客戶端傳送請求到**伺服器,然後**伺服器從原始伺服器中獲取內容再返回給客戶端。客戶端必須專門地配置****來訪問其他站點,如在瀏覽器中配置**伺服器位址及埠號等。

****伺服器的乙個典型應用就是為處於防火牆後的內部客戶端提供訪問外部internet網,比如校園網使用者通過**訪問國外**,公司內網使用者通過公司的統一**訪問外部internet**等。****伺服器也能夠使用快取來緩解原始伺服器負載,提供響應速度。

反向**伺服器

而反向**伺服器則相反,在客戶端來看它就像乙個普通的web伺服器。客戶端不要做任何特殊的配置。客戶端傳送普通的請求來獲取反向**所屬空間的內容。反向**決定將這些請求發往何處,然後就好像它本身就是原始伺服器一樣將請求內容返回。

反向**伺服器的乙個典型應用就是為處於防火牆後的伺服器提供外部internet使用者的訪問。反向**能夠用於在多個後端伺服器提供負載均衡,或者為較慢的後端伺服器提供快取。此外,反向**還能夠簡單地將多個伺服器對映到同乙個url空間。

兩者區別

兩者的相同點在於都是使用者和伺服器之間的中介,完成使用者請求和結果的**。主要的不同在於:

1.****的內部是客戶端,而反向**的內部是伺服器。即內網的客戶端通過****伺服器訪問外部網路,而外部的使用者通過反向**訪問內部的伺服器。

2.****通常接受客戶端傳送的任何請求,而反向**通常只接受到指定伺服器的請求。如校園網內部使用者可以通過****訪問國外的任何站點(如果不加限制的話),而只有特定的請求才發往反向**,然後又反向**發往內部伺服器。

2.解壓到相應的目錄,比如我是d盤 然後修改目錄名字為nginx,進入nginx目錄 雙擊nginx.exe 來啟動nginx

通過檢視程序來檢視nginx是否啟動成功,可以看到nginx已經啟動(為什麼有幾個,我也不清楚~_~)

3.此時 直接在瀏覽器位址列輸入:localhost 便能看到 歡迎頁面,說明你虛擬主機已經搭建好了 

通過上面的安裝與配置,nginx就算是可以執行了,但是如何與tomcat結合,實現負載均衡呢?既然要實現負載均衡,那肯定不是乙個伺服器,這裡說說的伺服器是我們自己配置的tomcat伺服器。如何在同一臺電腦上配置多個伺服器,在我的另外一篇部落格中有說明,不清楚的可以轉到這裡檢視[ 一台機器上同時開啟多個tomcat伺服器] (

1.配置好tomcat伺服器之後,要實現通過nginx來反向**,那麼此時就需要修改nginx的配置檔案,進去到nginx目錄,找到conf下的nginx.conf檔案,用記事本開啟。

#nginx所用使用者和組,window下不指定  

#user niumd niumd;

#工作的子程序數量(通常等於cpu數量或者2倍於cpu)

worker_processes 2;

#錯誤日誌存放路徑

#error_log logs/error.log;

#error_log logs/error.log notice;

error_log logs/error.log info;

#指定pid存放檔案

需要設定的地方有: 

tomcat伺服器端口號server localhost:8080; server localhost:8088;這兩個埠號在一台機器上同時開啟多個tomcat伺服器有講到。

nginx -s reload 是直接載入nginx.conf檔案,並不檢測nginx.conf檔案是否有錯誤。 

nginx -t 則會檢查nginx.conf檔案是否有錯,並會現實相關錯誤資訊,所以建議用此命令。

最終實現結果 

在瀏覽器中輸入localhost,結果為: 

重新整理幾次後,可能會切換到令乙個伺服器,這樣就實現了負載均衡。 

由於埠衝突,當我們在nginx配置檔案中預設設定listen 80埠時,可能無法實現反向**的功能,也就是我們在瀏覽器中輸入localhost的時候無法跳轉到tomcat的主頁,解決方法有兩個:

1.修改nginx配置檔案中listen的埠號,設定為其他埠,比如說9090,這時在瀏覽器中輸入localhost:9090就可以實現跳轉。

2.既然80埠被占用了,那我們只需要釋放這個埠就好了,cmd->netstat -ano 80 檢視80埠被占用的情況: 

再通過pid號來檢視到底是哪個程序或者程式占用了80埠: 

結果發現都是nginx.exe 本身,那就不能通過kill pid是釋放這個埠啦。

nginx tomcat伺服器搭建配置

nginx配置 nginx所用使用者和組,window下不指定 user niumd niumd 工作的子程序數量 通常等於cpu數量或者2倍於cpu worker processes 2 錯誤日誌存放路徑 error log logs error.log error log logs error....

nginx tomcat服務集群

解壓後修改nginx.conf配置檔案,新增 伺服器的集群 upstream nginx.com location 準備兩個tomcat,修改對應server.xml埠 tomcat1 tomcat2 啟動兩個tomcat 啟動nginx,訪問localhost index.jsp 127.0.0....

nginx原始碼學習 非http伺服器的負載均衡實現

負載均衡 說明 這裡只分析原始碼,具體每種模式工作原理網上有很詳細的解釋。這裡沒有分析http容器的負載均衡,只分析了upstream的負載均衡,二者有些許不同。nginx支援四種複雜均衡模式,與實現檔案對應如下 round robin模式 即迴圈模式,對應檔案ngx stream upstream...