一:認識 Nginx
1.什麼是Nginx ?
Nginx ("engine x") 是一個高性能的
HTTP和
反向代理 服務器,也是一個 IMAP/POP3/SMTP
服務器。 Nginx 是由 Igor Sysoev 爲
俄羅斯訪問量第二的 Rambler.ru 站點開發的.
Nginx是一款
輕量級的
Web 服務器/
反向代理服務器及
電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行.
2.優勢?
在高鏈接併發的狀況下,Nginx是
Apache服務器不錯的替代品:Nginx在美國是作虛擬主機生意的老闆們常常選擇的軟件平臺之一。可以支持高達 50,000 個併發鏈接數的響應,而在實際的運做中,是能夠支持二萬至四萬個平行連接。
Nginx做爲
負載均衡服務器:Nginx 既能夠在內部直接支持 Rails 和 PHP 程序對外進行服務,也能夠支持做爲 HTTP
代理服務器對外進行服務。Nginx採用C進行編寫,不管是系統資源開銷仍是CPU使用效率都比 Perlbal 要好不少。
Nginx 是一個安裝很是的簡單、配置文件很是簡潔(還可以支持perl語法)、
Bugs很是少的服務器。Nginx 啓動特別容易,而且幾乎能夠作到7*24不間斷運行,即便運行數個月也不須要從新啓動。你還可以不間斷服務的狀況下進行軟件版本的升級。
3.Tomcat與Nginx性能對比
Tomcat 服務器做爲一個 Web 服務器,其併發數在 300-500 之間,若是有超過 500的併發數便會出現 Tomcat 不能響應新的請求的狀況,嚴重影響網站的運行。另外,在訪問量大的狀況下,Tomcat 的線程數會不斷增長。因爲Tomcat 自身對內存的佔用有控制,當對內存的佔用達到最大值時便會出現內存溢出,對網站的訪問嚴重超時等現象,這時便須要從新啓動 Tomcat 以釋放佔用的內存,這樣作便會阻斷網站運行。因此對 Tomcat 作負載均衡便頗有必要。目前能夠和 Tomcat 作負載均衡的主流服務器是 Apache ,可是 Nginx 因爲功能多、配置簡單等優勢逐漸成爲不少負載均衡服務器的首選。 Nginx 的併發數可達到50000 ,因此理論上能夠和Tomcat 以 1:100 的比例來配置,這樣即可以很好的解決網站併發瓶頸問題。
4.補充什麼是反向代理
反向代理方式實際上就是一臺負責轉發的代理服務器,貌似充當了真正服務器的功能,但實際上並非,代理服務器只是充當了轉發的做用,而且從真正的服務器那裏取得返回的數據。這樣說,其實nginx完成的就是這樣的工做。咱們讓nginx監聽一個端口,譬如80端口,但實際上咱們轉發給在8080端口的tomcat,由它來處理真正的請求,當請求完成後,tomcat返回,但數據此時沒直接返回,而是直接給nginx,由nginx進行返回,這裏,咱們會覺得是nginx進行了處理,但實際上進行處理的是tomcat。
二:搭建實例
若是看到窗口閃了一下,說明啓動成功,打開任務管理器查看 是否有兩個nginx.exe。 若是有才真正開啓成功。
2.修改conf 下的 nginx.conf文件 負載均衡設置,看到以下配置
這段代碼在server裏面,至關於一個代理服務器,固然能夠配置多個。html
下面咱們仔細來分析一下:nginx
listen:表示當前的代理服務器監聽的端口,默認的是監聽80端口。注意,若是咱們配置了多個server,這個listen要配置不同,否則就不能肯定轉到哪裏去了。最低80。windows
server_name:表示監聽到以後須要轉到哪裏去,這時咱們直接轉到本地,這時是直接到nginx文件夾內。tomcat
location:表示匹配的路徑,這時配置了/表示全部請求都被匹配到這裏服務器
root:裏面配置了root這時表示當匹配這個請求的路徑時,將會在這個文件夾內尋找相應的文件,這裏對咱們以後的靜態文件伺服頗有用。併發
index:當沒有指定主頁時,默認會選擇這個指定的文件,它能夠有多個,並按順序來加載,若是第一個不存在,則找第二個,依此類推。負載均衡
error_page: 是表明錯誤的頁面。性能
那咱們知道了具體的配置了,怎麼讓它訪問localhost時轉到tomcat時。實際上就修改兩個地方:網站
proxy_pass,它表示代理路徑,至關於轉發。
修改了文件,在cmd窗口執行
nginx -s reload nginx能夠從新加載文件的。
而後訪問網頁localhost,則會獲得咱們想要的結果:
3.配置多個Tomcat 也是如此,以下:
咱們在server外添加了一個upstream,而直接在proxy_pass裏面直接用http://+upstream的名稱來使用。
4.注意 你的項目必須都部署到每一臺服務器上!
訪問項目的路徑爲:
localhost/項目名/方法名
5.關閉Nginx
直接運行 nginx -s stop 就能夠關閉了.