(轉載)原文連接:http://www.javashuo.com/article/p-pcfdfykk-ev.html程序員
摘要:本文從Nginx的概念出發,分別從反向代理的概念、優點、配置代碼3個方面介紹了Nginx的特性之一反向代理。瀏覽器
文章來源:宜信技術學院 & 宜信支付結算團隊技術分享第一期-宜信支付結算八方數據團隊高級技術經理 周恆《Nginx的細枝末節》緩存
分享者:宜信支付結算八方數據團隊高級技術經理 周恆安全
原文首發於支付結算技術團隊公衆號:野指針服務器
1、Nginx概念解讀
對於新事物的理解,最好的方式就是從概念入手,本文做爲《Nginx專題》系列文章的第一篇,先從Nginx的名稱開始來分解這個神祕的引擎。網絡
Nginx,是engine X的縮寫,發音也是'engine x',2004年由俄羅斯大神伊戈爾·賽索耶夫開發,提供了高性能而易用的HTTP反向代理功能。後期還加入了TCP的反向代理支持。負載均衡
最初Nginx是爲了解決早年的C10K問題而生的。什麼是C10K呢?C表明Client客戶、10K表明10000,即一臺服務器同時保持1萬連接。這在當時是一個很是棘手的問題。框架
經過Google搜索Nginx會獲得如下解釋:異步
Nginx是異步框架的網頁服務器,也能夠用做反向代理、負載平衡器和HTTP緩存。ide
從這句話中,咱們能夠獲得下面幾個關鍵:
異步框架
反向代理
負載均衡
本專題文章將分別從這幾個關鍵詞來解讀Nginx的強大之處。本文先介紹Nginx特性之反向代理及其配置實現。
2、反向代理
2.1 什麼是反向代理
代理在生活中很是常見,房屋中介是代理、終端零售是代理、選舉表明是代理。這些代理均可以幫助需求方減輕不少工做的複雜度,提高效率和體驗。
網絡裏的代理服務是什麼樣子,我想各位讀者也很是清楚,這裏再簡單回顧一下:假設咱們想在公司上網看B站的視頻,而規範的公司出於安全和辦公效率的考慮,設置了網絡策略,不容許訪問視頻網站,聰明的程序員不可能被這些事情所戰勝,只要購買一臺雲服務,搭建代理服務,把瀏覽器設置上代理,就能夠輕鬆訪問視頻網站。這就是常見的代理。
那麼如今問題來了:「代理」你們都懂,這裏爲何強調是反向代理呢?難道還有正向代理?答案是確定的。
正向代理就是你們常見的代理,以請求端也就是客戶端的角度爲正向,用戶發出請求通過的代理,稱爲「正向代理」。這時是用戶主動選擇使用代理。
反向代理:先看圖再解釋。
主動權被反轉,原來是客戶端選擇代理,如今是代理選擇服務端節點。因爲控制權的反轉,這樣的代理被稱爲「反向代理」。
2.2 反向代理的優勢
1)保護服務安全
隱藏服務節點的IP;
將服務節點置於防火牆以後,避免直接***業務節點服務器。
2)服務節點更專一於業務,同時提高性能
因爲有反向代理的存在,可讓反向代理服務器去實現好比https、gzip壓縮等與業務無關的功能;
提供動靜態分離,將靜態文件發往靜態服務器或本地文件系統,避免業務節點處理這些與業務無關的請求;
提供緩存機制,將一些短期內不會變化的動態內容,在反向代理服務器這層增長緩存,下降業務服務器的請求量;
因爲控制權在代理服務這邊,徹底能夠根據服務節點的性能動態分配請求,作到服務節點性能最佳。
正是因爲Ngxin引入了反向代理的特性,讓請求和響應都要通過Nginx,所以給Nginx帶來了很是多的可能。好比負載均衡、HTTP緩存等。
3、反向代理的配置
Nginx中關於反向代理的配置至關簡單。
3.1 配置一個單節點的反向代理
#simple reverse-proxy
server {
listen 80;
server_name big.server.com;
access_log logs/big.server.access.log main;
#pass requests for dynamic content to rails/turbogears/zope, et al location / { proxy_pass http://127.0.0.1:8080; }
}
這裏定義的規則是以big.server.com域名來請求Nginx的80端口,會將請求代理到127.0.0.1:8080上。
3.2 配置一組反向代理的服務節點。
1)配置一組反向代理並命名。
upstream big_server_com {
server 192.168.0.1:8000;
server 192.168.0.1:8001;
}
這裏定義了upstream,這個upstream能夠理解爲上傳流,之因此叫上傳是由於:從服務器獲取數據叫下載,向服務器發送數據就叫上傳,這裏是將數據請求發送到服務節點,因此叫上傳。
給這組服務節點命名爲big_server_com,其中包括兩個節點,分別是:192.168.0.1:8000和192.168.0.1:8001。
2)配置規則:讓知足的請求可以反向代理到這組服務節點中。
server {
listen 80;
server_name big.server.com;
access_log logs/big.server.access.log main;
location / { proxy_pass http://big_server_com; }
}
這裏定義的規則是以big.server.com域名來請求Nginx的80端口,請求url是以/爲後綴的全部請求,都會轉發到前面定義的名字爲big_server_com的服務節點組。
4、總結
本文從Nginx的概念出發,分別從反向代理的概念、優點、配置代碼3個方面介紹了Nginx的特性之一反向代理。後續文章將繼續介紹Nginx的另外三個特性:負載均衡、HTTP緩存、異步框架,敬請期待。
原文連接:http://www.javashuo.com/article/p-pcfdfykk-ev.html
5、最後
若是文章對您有幫助,關注一下⬇️再走吧!