1.什么是nginx?
nginx是一個高性能的HTTP和反向代理的web服務器,同時也提供了IMAP/POP3/SMTP服務。
特點:占用內存少,並發能力強
2.nginx作為web服務器
nginx可以作為靜態頁面的web服務器,同時還支持CGI協議的動態語言,比如perl、php等,但是不支持Java。Java程序只能通過tomcat配合完成。nginx專為性能優化而開發,性能是其最重要的考量,實際上非常注重效率,能經受高負載的考驗,有報告表明能支持高達50000個並發的連接數。更多查看https://lnmp.org/nginx.html
3.正向代理與反向代理
nginx不僅可以做反向代理,實現負載均衡,還能用作正向代理來進行上網等功能。
3.1 正向代理
大陸不允許直接訪問Google,因此需要在瀏覽器端配置代理服務器,通過代理服務器去訪問Google。
在客戶端(如瀏覽器)配置代理服務器,通過代理服務器進行網絡訪問的過程,就稱為正向代理。

3.2 反向代理
客戶端對代理是無感知的,因為客戶端不需要配置代理,也不知道目標服務器,只知道代理服務器。我們只需要將請求發送到反向代理服務器上,由反向代理服務器去選擇目標服務器獲取數據后再返回給客戶端。此時 反向代理服務器和目標服務器 對外就是一個服務器,暴露的是代理服務器地址,隱藏了真實服務器的IP地址。

4.負載均衡
客戶端發送多個請求到服務器,服務器處理請求。有一些可能要與數據庫進行交互,服務器處理完畢后,再將結果返回給客戶端。

這種架構模式對於早期相對單一的系統,並發請求相對較少的情況下是比較合適的,成本也低。但是隨着信息數量的不斷增長,訪問量和數據量的飛速增長,以及數據業務的復雜度增加,這種架構會造成服務器響應客戶端的請求日益緩慢,並發量特別大的時候,還容易導致服務器崩潰。
很明顯這是服務器性能的瓶頸造成的問題,那么如何解決這種情況呢?
我們首先想到的是升級服務器的配置,比如提高CPU、加大內存等提高機器的物理性能來解決問題。
上面的分析表明通過增加服務器物理配置來解決問題的方法,即縱向解決問題的方法行不通了。那么橫向增加服務器的數量呢?集群的概念就這樣產生了。
單台服務器解決不了,我們增加服務器的數量,然后將請求分發到各個服務器上,將原來請求集中到單個服務器上的情況,改為將請求分發到多個服務器上,將負載分發到不同的服務器上,也就是我們所說的負載均衡。
5. 動靜分離
把靜態資源和動態資源都部署到tomcat里面,每次請求不管是靜態資源,還是動態資源,都去請求tomcat。用單服務部署所有的內容。
局限性:請求靜態資源和動態資源都去請求tomcat,會帶來更大的壓力。

為了加快網站的解析速度,可以把動態頁面和靜態頁面由不同的服務器來解析,加快解析速度,降低原來單個服務器的壓力。

