聊聊 Nginx 的反向代理

本文來自於個人 慕課網手記聊聊 Nginx 的反向代理,轉載請保留連接 ;)

背景

最近在優化服務基礎設施這塊,正好有時間寫一下Nginx的體會。相信你們都據說過反向代理,一提到反向代理必定會想到Nginx。什麼你沒聽過Nginx?那麼你必定據說過Apache吧!Apache是世界使用排名第一的Web服務器軟件。它能夠運行在幾乎全部普遍使用的計算機平臺上,因爲其跨平臺和安全性被普遍使用,是最流行的Web服務器端軟件之一。Apache的發展時期很長,並且是毫無爭議的世界第一大服務器。它有着不少優勢:穩定、開源、跨平臺等等。它出現的時間太長了,它興起的年代,互聯網產業遠遠比不上如今。因此它被設計爲一個重量級的。它不支持高併發的服務器。在Apache上運行數以萬計的併發訪問,會致使服務器消耗大量內存。操做系統對其進行進程或線程間的切換也消耗了大量的CPU資源,致使HTTP請求的平均響應速度下降。因此這些都決定了Apache不可能成爲高性能WEB服務器,輕量級高併發服務器Nginx就應運而生了。nginx

什麼是Nginx

俄羅斯的工程師Igor Sysoev,他在爲Rambler Media工做期間,使用C語言開發了Nginx。Nginx做爲WEB服務器一直爲Rambler Media提供出色而又穩定的服務。而後呢,Igor Sysoev將Nginx代碼開源,而且賦予自由軟件許可證。tomcat

因爲:安全

  • Nginx是一款自由的、開源的、高性能的HTTP服務器和反向代理服務器(這是個開源的時代啊~)
  • Nginx是一個跨平臺服務器,能夠運行在Linux,Windows,FreeBSD,Solaris, AIX,Mac OS等操做系統上。
  • 能夠做爲反向代理進行負載均衡的實現,帶來的極大的穩定性。

Nginx這樣作的目的主要是將數據的承載量分攤到多個服務器上進行執行,這只是在服務基礎設施上提升性能的優化手段之一。從下面圖就能夠看出:服務器

某項目架構圖

什麼是反向代理?

看了網上不少篇文章,下面這段話是我我的以爲介紹的最清楚的。
反向代理(Reverse Proxy)方式是指以代理服務器來接受Internet上的鏈接請求,而後將請求轉發給內部網絡上的服務器;並將從服務器上獲得的結果返回給Internet上請求鏈接的客戶端,此時代理服務器對外就表現爲一個服務器。
因此反向代理服務器是引用在服務端。決定哪臺服務器提供服務。
那麼我就模擬了一個基本的反向代理和負載均衡配置實現,下面是個人操做步驟:網絡

反向代理的模擬

首先建立多個 tomcat 服務器,我這裏建立了三個:
建立多個 tomcat 服務器架構

而後修改每一個 tomcat 運行在不一樣的端口號上,每一個 server.xml配置文件須要修改三處端口:
修改端口號併發

分別在 8080,8081,8082 端口配置 8006,8081,8010 端口,分別進行啓動測試,可是注意防火牆配置問題。測試結果以下:
測試結果負載均衡

接着配置 nginx 的配置文件,進行反向代理:
配置 nginx 參數高併發

最後不斷訪問剛配置的 test.tomcats.com 域名,發現三臺 tomcat 成功運行的頁面都有出現,比例大體 1:1:1:
配置完後運行結果性能

恭喜你,配置成功了!

配置負載均衡

其實很簡單,就是在剛剛配置的 nginx 文件中 的 upstream tomcats 中的 server 後面添加一個 weight, 便可表明權重。權重越高,分派請求的數量就越多。默認權重是 1。
配置負載均衡

相關文章
相關標籤/搜索