簡單介紹一下Nginx
Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器。 Nginx 主要提供反向代理、負載均衡、動靜分離(靜態資源服務)等服務。下面我簡單地介紹一下這些名詞。
反向代理
談到反向代理,就不得不提一下正向代理。無論是正向代理,還是反向代理,說到底,就是代理模式的衍生版本罷了
正向代理:某些情況下,代理我們用戶去訪問服務器,需要用戶手動的設置代理服務器的ip和端口號。正向代理比較常見的一個例子就是 VPN 了。
反向代理: 是用來代理服務器的,代理我們要訪問的目標服務器。代理服務器接受請求,然后將請求轉發給內部網絡的服務器,並將從服務器上得到的結果返回給客戶端,此時代理服務器對外就表現為一個服務器。
通過下面兩幅圖,大家應該更好理解(圖源:http://blog.720ui.com/2016/nginx_action_05_proxy/):


所以,簡單的理解,就是正向代理是為客戶端做代理,代替客戶端去訪問服務器,而反向代理是為服務器做代理,代替服務器接受客戶端請求。
負載均衡
在高並發情況下需要使用,其原理就是將並發請求分攤到多個服務器執行,減輕每台服務器的壓力,多台服務器(集群)共同完成工作任務,從而提高了數據的吞吐量。
Nginx支持的weight輪詢(默認)、ip_hash、fair、url_hash這四種負載均衡調度算法,感興趣的可以自行查閱。
負載均衡相比於反向代理更側重的是將請求分擔到多台服務器上去,所以談論負載均衡只有在提供某服務的服務器大於兩台時才有意義。
動靜分離
動靜分離是讓動態網站里的動態網頁根據一定規則把不變的資源和經常變的資源區分開來,動靜資源做好了拆分以后,我們就可以根據靜態資源的特點將其做緩存操作,這就是網站靜態化處理的核心思路。
為什么要用 Nginx?
如果面試官問你這個問題,就一定想看你知道 Nginx 服務器的一些優點嗎。
Nginx 有以下5個優點:
高並發、高性能(這是其他web服務器不具有的)
可擴展性好(模塊化設計,第三方插件生態圈豐富)
高可靠性(可以在服務器行持續不間斷的運行數年)
熱部署(這個功能對於 Nginx 來說特別重要,熱部署指可以在不停止 Nginx服務的情況下升級 Nginx)
BSD許可證(意味着我們可以將源代碼下載下來進行修改然后使用自己的版本)
Nginx 的四個主要組成部分了解嗎?
Nginx 二進制可執行文件:由各模塊源碼編譯出一個文件
nginx.conf 配置文件:控制Nginx 行為
acess.log 訪問日志: 記錄每一條HTTP請求信息
error.log 錯誤日志:定位問題