Nginx專題(1):Nginx之反向代理及配置
摘要:本文從Nginx的概念出發,分別從反向代理的概念、優勢、配置程式碼3個方面介紹了Nginx的特性之一反向代理。
文章來源:宜信技術學院 & 宜信支付結算團隊技術分享第一期-宜信支付結算八方資料團隊高階技術經理 周恆《Nginx的細枝末節》
分享者:宜信支付結算八方資料團隊高階技術經理 周恆
原文首發於支付結算技術團隊公號:野指標
一、Nginx概念解讀
對於新事物的理解,最好的方式就是從概念入手,本文作為《Nginx專題》系列文章的第一篇,先從Nginx的名稱開始來分解這個神祕的引擎。
Nginx,是engine X的縮寫,發音也是'engine x',2004年由俄羅斯大神伊戈爾·賽索耶夫開發,提供了高效能而易用的HTTP反向代理功能。後期還加入了TCP的反向代理支援。
最初Nginx是為了解決早年的C10K問題而生的。什麼是C10K呢?C代表Client客戶、10K代表10000,即一臺伺服器同時保持1萬連結。這在當時是一個非常棘手的問題。
通過Google搜尋Nginx會得到以下解釋:
Nginx是非同步框架的網頁伺服器,也可以用作反向代理、負載平衡器和HTTP快取。
從這句話中,我們可以得到下面幾個關鍵:
- 非同步框架
- 反向代理
- 負載均衡
- HTTP快取
本專題文章將分別從這幾個關鍵詞來解讀Nginx的強大之處。本文先介紹Nginx特性之反向代理及其配置實現。
二、反向代理
2.1 什麼是反向代理
代理在生活中非常常見,房屋中介是代理、終端零售是代理、選舉代表是代理。這些代理都可以幫助需求方減輕很多工作的複雜度,提升效率和體驗。
網路裡的代理服務是什麼樣子,我想各位讀者也非常清楚,這裡再簡單回顧一下:假設我們想在公司上網看B站的視訊,而規範的公司出於安全和辦公效率的考慮,設定了網路策略,不允許訪問視訊網站,聰明的程式設計師不可能被這些事情所打敗,只要購買一臺雲服務,搭建代理服務,把瀏覽器設定上代理,就可以輕鬆訪問視訊網站。這就是常見的代理。
那麼現在問題來了:“代理”大家都懂,這裡為什麼強調是反向代理呢?難道還有正向代理?答案是肯定的。
正向代理就是大家常見的代理,以請求端也就是客戶端的角度為正向,使用者發出請求經過的代理,稱為“正向代理”。這時是使用者主動選擇使用代理。
反向代理:先看圖再解釋。
主動權被反轉,原來是客戶端選擇代理,現在是代理選擇服務端節點。由於控制權的反轉,這樣的代理被稱為“反向代理”。
2.2 反向代理的優點
1)保護服務安全
- 隱藏服務節點的IP;
- 將服務節點置於防火牆之後,避免直接攻擊業務節點伺服器。
2)服務節點更專注於業務,同時提升效能
- 由於有反向代理的存在,可以讓反向代理伺服器去實現比如https、gzip壓縮等與業務無關的功能;
- 提供動靜態分離,將靜態檔案發往靜態伺服器或本地檔案系統,避免業務節點處理這些與業務無關的請求;
- 提供快取機制,將一些短時間內不會變化的動態內容,在反向代理伺服器這層增加快取,降低業務伺服器的請求量;
- 由於控制權在代理服務這邊,完全可以根據服務節點的效能動態分配請求,做到服務節點效能最佳。
正是由於Ngxin引入了反向代理的特性,讓請求和響應都要經過Nginx,因此給Nginx帶來了非常多的可能。比如負載均衡、HTTP快取等。
三、反向代理的配置
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的服務節點組。
四、總結
本文從Nginx的概念出發,分別從反向代理的概念、優勢、配置程式碼3個方面介紹了Nginx的特性之一反向代理。後續文章將繼續介紹Nginx的另外三個特性:負載均衡、HTTP快取、非同步框架,敬請期待。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69918724/viewspace-2662873/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Nginx 配置反向代理Nginx
- Nginx 配置:反向代理Nginx
- nginx 學習之反向代理(1)Nginx
- tomcat 配置nginx 反向代理TomcatNginx
- Nginx正向代理和反向代理配置Nginx
- Nginx之路--配置正向代理、反向代理Nginx
- nginx反向代理配置去除字首Nginx
- 淺談Nginx之反向代理Nginx
- Nginx之location中反向代理proxy_pass配置Nginx
- Nginx反向代理Nginx
- nginx 反向代理Nginx
- yapi 的 nginx 反向代理配置文字APINginx
- nginx反向代理配置如何去除字首Nginx
- nginx正向代理、反向代理Nginx
- nginx大道至簡之反向代理Nginx
- docker 安裝 nginx 並配置反向代理DockerNginx
- Nginx-05-nginx 反向代理是什麼?windows 下如何配置使用 nginxNginxWindows
- nginx面試題-nginx負載均衡與正反向代理Nginx面試題負載
- 簡單介紹nginx反向代理及使用Nginx
- Nginx四層反向代理Nginx
- nginx 反向代理 swoole 使用Nginx
- Docker Compose例項之nginx反向代理GitLabDockerNginxGitlab
- docker下nginx反向代理和負載均衡配置DockerNginx負載
- nginx配置web服務|反向代理|負載均衡NginxWeb負載
- Nginx 反向代理解決跨域問題Nginx跨域
- nginx反向代理快取教程。Nginx快取
- nginx 反向代理 介面請求Nginx
- 一段萬能的nginx介面反向代理配置Nginx
- Nginx 反向代理解決跨域問題分析Nginx跨域
- nginx代理配置Nginx
- 楊老師課堂之Nginx學習之反向代理Nginx
- Nginx反向代理實現跨域Nginx跨域
- Nginx proxy manager反向代理docker hubNginxDocker
- NGINX生產環境反向代理到後端tomcat配置Nginx後端Tomcat
- 解決 nginx 反向代理時的 upstream timeout 問題Nginx
- nginx反向代理目錄及動靜分離公羊seoNginx
- 反向代理學習筆記(一) Nginx與反向代理緒論筆記Nginx
- Nginx 全模組安裝及匹配方式、反向代理和負載均衡配置Nginx負載