Nginx反向代理伺服器的配置(詳細)

2021-02-13 德古拉的雜貨鋪

Nginx是俄羅斯的程序設計師Igor Sysoev為俄羅斯訪問量第二的Rambler.ru站點開發的開源伺服器軟體,Nginx完全使用C語言編寫,可以作為一臺高性能的web伺服器、反向代理伺服器和郵件代理伺服器使用。

在高連接並發的場合,Nginx是Apache商業伺服器不錯的替代品。

Nginx的優點很多,總結起來就是:高並發下響應請求更快、低耦合設計帶來的高可擴展性高可靠性低內存消耗高並發連接數、不間斷服務的熱部署開放源碼等。

Nginx使用起來比較簡單,經過簡單的配置文件的修改,就可以將主機配置成一臺web伺服器、一臺反向代理伺服器或者是一臺郵件代理伺服器

在配置Nginx反向代理伺服器之前,還是先來說說什麼是反向代理伺服器吧。

其實,反向代理伺服器可以類比為租房市場上的中介,客戶端或者瀏覽器就是房客,而web伺服器就是房東,當房客想找房的時候,由於種種原因,沒有直接去找房東,而是向中介諮詢,然後中介把手裡面合適的房源推給房客。

反向代理伺服器也是這樣,反向代理伺服器代理了多臺提供相同服務的web伺服器(web伺服器集群以提高伺服器的處理能力),當客戶端或者瀏覽器向web伺服器發送請求時,請求被發送到了反向代理伺服器上,反向代理伺服器再把請求轉發給代理的web伺服器中的某一臺,為客戶端服務。

為什麼叫反向代理呢?其實可以簡單理解為:反向代理伺服器為web伺服器服務的,典型用途是將防火牆後面的伺服器提供給Internet用戶訪問,還可以為後端的多臺伺服器提供負載平衡,或為後端較慢的伺服器提供緩衝服務;而代理是為客戶端服務的,典型用途是為在防火牆內的區域網客戶端提供訪問Internet的途徑,比如常見的VPN代理,還可以使用緩衝特性減少網絡使用率。

反向代理伺服器就是客戶端請求的調度者,對負載(工作任務,請求)進行平衡、分攤到每個Web伺服器,從而協同完成工作任務,這個過程就被稱之為負載均衡。通過配置Nginx反向代理伺服器,就能自然地實現負載均衡。

在正式安裝Nginx之前,還需要安裝Nginx的三個依賴庫:OpenSSL、PCRE和ZLib。其中,OpenSSL用於數據的加密,PCRE用於解析正則表達式,而ZLib用來進行文件的壓縮和解壓縮。gcc\g++編譯器用來進行編譯安裝也是必備的。

tips:這些庫的安裝包都可以在官網下載,其中有些連結試了wget用不了,需要的可以微信公眾號【德古拉的雜貨鋪】後臺發送「Nginx等安裝包」獲取。

1、gcc\g++編譯器安裝

sudo apt-get install gccsudo apt-get install g++sudo apt-get install build-essentialsudo apt-get install libtool

2、PCRE庫源碼安裝

tar -zxvf pcre-8.39.tar.gzcd pcre-8.39/./configuremakesudo make install

3、ZLib庫源碼安裝

tar -zxvf zlib-1.2.8.tar.gzcd zlib-1.2.8/./configuremakesudo make install

4、OpenSSL庫源碼安裝

tar -zxvf openssl-1.0.1t.tar.gzcd openssl-1.0.1t/./configmakesudo make install

5、Nginx源碼安裝

tar -zxvf nginx-1.10.1.tar.gzcd nginx-1.10.1/./configuremakesudo make install

安裝好了之後就可以測試一下Nginx是否正確安裝了,默認情況下Nginx被安裝在目錄/usr/local/nginx下。

其中Nginx的配置文件存放在conf/nginx.conf中,bin命令是/sbin目錄下的nginx文件。

sudo /usr/local/nginx/sbin/nginx

這時,Nginx會自動讀取配置文件/usr/loacl/nginx/conf/nginx.conf,並運行;

在瀏覽器搜索欄輸入本機的IP,就能看到「Welcome to nginx」,表示Nginx已經安裝並運行成功,此時默認配置為一臺簡單的web伺服器。

sudo /usr/local/nginx/sbin/nginx -s stopsudo /usr/local/nginx/sbin/nginx -s quit

sudo /usr/local/nginx/sbin/nginx -s reload


Nginx反向代理伺服器的配置


配置反向代理伺服器需要修改Nginx的配置文件,配置文件中的層次關係大致如下:

main中主要是Nginx在運行時與具體業務功能無關的參數,比如工作進程數、運行身份等;

http提供http服務相關的參數,比如keepalive、gzip等;

server是http服務上支持若干虛擬機,每個虛擬機一個對應的server配置項,配置項裡包含該虛擬機相關的配置;

location是http服務中,某些特定的URL對應的一系列配置項;

mail是實現email相關的SMTP/IMAP/POP3代理時,共享的一些配置項,在這裡就不談了。

用上圖這樣一個配置實例來簡單介紹一下反向代理伺服器的配置方法。

反向代理伺服器代理了兩臺web伺服器,這兩臺web伺服器也可以使用Nginx進行配置,這裡就不談了,主要說一下反向代理伺服器的配置流程。

server_name對應的是瀏覽器訪問的域名:localhost;

當有用戶請求該域名時,代理伺服器會去location /中去尋找;

在location中設置代理:proxy  url;

這裡的url可以是隨意的一個連結,通過這個url,代理伺服器去upstream模塊尋找web伺服器;

所有的web伺服器的地址都在upstream裡邊,默認情況下每個web伺服器被請求的機會均等,也可以設置權重weight修改訪問機率。

這樣,一臺Nginx反向代理伺服器就配置好了,當部署完成之後,通過瀏覽器訪問「localhost」,實際替瀏覽器服務的,會是兩臺web伺服器中隨機的一臺,機會均等。

相關焦點

  • Nginx反向代理伺服器
    Nginx (engine x) 是一個高性能的HTTP和反向代理web伺服器,其特點:1.穩定性極強2.Nginx提供了非常豐富的配置實例
  • CentOS 配置 Nginx 反向代理
    導讀Nginx作為反向代理伺服器被廣泛使用在各大網際網路企業。它簡單易用,可以根據業務的需求將其不同的業務類型代理至不同的伺服器,將整個站點請求壓力按類型分攤到不同的伺服器。該方式使的整個站點請求性能得以極大的提升。本文簡要描述了Nginx幾種不同情形的代理演示,供大家參考。
  • 13.nginx高級配置--反向代理
    另外,我們也了解到了nginx,到目前為止我們還只是把它當作一個普通的 web 伺服器在使用。    現在我們需要在同一臺伺服器上搭建上述所有的服務,那該如何配置訪問呢?如果nginx只是一個普通的web伺服器的話也就不會如此之火了,關鍵是nginx這個「年輕」的「小夥」非常不講武德,這裡不得不提到 nginx 另外一個殺手級應用了--反向代理。
  • 配置Nginx反向代理WebSocket
    不僅能夠保證後端伺服器的隱蔽性,還可以提高網站部署靈活性。今天我們來講一下,如何用Nginx給WebSocket伺服器實現反向代理和負載均衡。什麼是反向代理和負載均衡反向代理(Reverse Proxy)方式是指以代理伺服器來接受Internet上的連接請求,然後將請求轉發給內部網絡上的伺服器。
  • 深入淺出反向代理 Web 伺服器Nginx
    反向代理伺服器?經常聽人說到一些術語,如反向代理,那麼什麼是反向代理,什麼又是正向代理呢?正向代理:這裡你能夠發現,正向代理「代理」的是客戶端,而且客戶端是知道目標的,而目標是不知道客戶端是通過VPN訪問的。當我們在外網訪問百度的時候,其實會進行一個轉發,代理到內網去,這就是所謂的反向代理,即反向代理「代理」的是伺服器端,而且這一個過程對於客戶端而言是透明的。Nginx的Master-Worker模式
  • Nginx配置反向代理,一篇搞定!
    其實客戶端對代理是無感知的,因為客戶端不需要任何配置就可以訪問,我們只需要將請求發送到反向代理伺服器,由反向代理伺服器去選擇目標伺服器獲取數據後,在返回給客戶端,此時反向代理伺服器和目標伺服器對外就是一個伺服器,暴露的是代理伺服器地址,隱藏了真實伺服器 IP 地址。
  • Nginx 正向代理與反向代理
    而在此之前僅僅使用了過代理軟體,曾經為了訪問google,使用了代理軟體,需要在瀏覽器中配置代理的地址。我只知道有代理這個概念,並不清楚代理還有正向和反向之分,於是趕緊學習一下,補充一下知識。首先弄清楚什麼是正向代理,什麼是反向代理,然後是二者在實際使用中展示的方式是什麼樣的,最後總結一下正向代理用來做什麼,反向代理可以做什麼。
  • Nginx 學習 —— 正向代理與反向代理
    2、反向代理,我們對外提供服務,屬於服務提供者2、nginx正向代理和反向代理實例解析nginx在正向代理方面的應用非常地少,因此,對於正向代理的相關配置指令也不多,下面是一個nginx作為正向代理伺服器的配置實例,配置僅供參考。
  • Nginx反向代理實踐
    ,從其關係的一組或多組後端伺服器(如Web伺服器)上獲取資源,然後再將這些資源返回給客戶端,客戶端只會得知反向代理的IP位址,而不知道在代理伺服器後面的伺服器簇的存在。反向代理的作用安全:作為應用層防火牆,為網站提供對基於Web的攻擊行為(例如DoS/DDoS的防護,更容易排查惡意軟體等為後端伺服器(集群)統一提供加密和SSL加速(如SSL終端代理)負載均衡,若伺服器集群中有負荷較高者,反向代理通過URL重寫,根據連線請求從負荷較低者獲取與所需相同的資源或備援對於靜態內容及短時間內有大量訪問請求的動態內容提供緩存服務對一些內容進行壓縮,以節約帶寬或為網絡帶寬不佳的網絡提供服務實踐
  • Nginx 反向代理與負載均衡
    什麼是反向代理當我們有一個伺服器集群,並且伺服器集群中的每臺伺服器的內容一樣的時候,同樣我們要直接從個人電腦訪問到伺服器集群伺服器的時候無法訪問,必須通過第三方伺服器才能訪問集群這個時候,我們通過第三方伺服器訪問伺服器集群的內容,但是我們並不知道是哪一臺伺服器提供的內容,此種代理方式稱為反向代理什麼是負載均衡公司會建立很多的伺服器
  • 如何在 CentOS 7 用 cPanel 配置 Nginx 反向代理
    它既可以被安裝為一個獨立的 Web 伺服器,也可以安裝成反向代理 Web 伺服器。在這篇文章,我將討論在安裝了 cPanel 管理系統的 Centos 7 伺服器上安裝 Nginx 作為 Apache 的反向代理伺服器。Nginx 作為前端伺服器用反向代理為靜態文件提供服務,Apache 作為後端為動態文件提供服務。這個設置將整體提高伺服器的性能。
  • Nginx的 反向代理 究竟怎麼理解?
    1.Nginx知識網結構圖Nginx是一個高性能的HTTP和反向代理伺服器,特點是佔用內存少,並發能力強,事實上nginx的並發能力確實在同類型的網頁伺服器中表現較好nginx專為性能優化而開發,性能是其最重要的要求,十分注重效率,有報告nginx能支持高達50000個並發連接數
  • 深入淺出反向代理伺服器「Nginx」
    Nginx ("engine x") 是一個高性能的HTTP和反向代理伺服器,特點是佔有內存少,並發能力強,事實上nginx的 並發能力確實在同類型的網頁伺服器中表現較好,中國 大陸使用nginx網站用戶有:百度、京東、新浪、網易、 騰訊、淘寶等。
  • Nginx 反向代理簡單使用
    第三步 配置nginx信息cd nginx-1.19.0./configure --prefix=/usr/local/nginx/sbin/nginx -g "user root;"正向代理:代理的是客戶端,例如翻牆 vpn  用戶連接 vpn 通過 vpn伺服器代理間接訪問外網
  • Nginx 反向代理、負載均衡圖文教程 !
    當然很多都是隨便一說的玩笑話,聽過一笑便可,不必當真,也不必抱怨了好了,今天就直接來說一下主題吧,前端要了解一些運維的Nginx用法,內容不多,簡單看看就好,這兩個功能在工作當中就夠用了,那麼首先來看個問題,什麼是反向代理與負載均衡什麼是反向代理與負載均衡什麼是反向代理當我們有一個伺服器集群,並且伺服器集群中的每臺伺服器的內容一樣的時候,同樣我們要直接從個人電腦訪問到伺服器集群伺服器的時候無法訪問
  • Nginx實現反向代理
    反向代理:在收到客戶端請求之後,會修目標IP位址和埠正向代理:在收到客戶端請求之後,會修源IP位址和埠上遊伺服器:代理伺服器後端的哪些真正給客戶端提供服務的節點
  • 反向代理伺服器nginx-proxy-manager
    一直以來,老蘇都是使用群暉內置的反向代理,雖然很方便易用,但在某些情況下顯得並不靈活。比如老蘇打算安裝 Authelia,需要修改 nginx 轉發規則,必須通過 SSH 登錄後找到相應的文件修改,這一點上不如 nginx-proxy-manager,當你習慣後,你會發現 npm 的優點遠不止這點。
  • 圖文講解,如何使用 Nginx 反向代理、負載均衡
    來源:http://t.cn/AiKual8Y學到老活到老什麼是反向代理與負載均衡Nginx反向代理與負載均衡的實現nginx配置proxy_passUpstream模塊實現負載均衡工作中的簡單使用學到老活到老前端圈一直很新
  • 代理技術 | 重磅,代理伺服器背後的故事(正向、反向代理)
    之前我們總結過nginx是一款輕量級的web伺服器\代理伺服器,是搭建負載均衡的優選(如何搭建負載均衡,可參考《nginx
  • F5社區好文推薦: 理解Nginx之反向代理
    作者| 李煜峰| F5 研發實習生反向代理是指使用代理伺服器來接受客戶端的請求,然後轉發給內網上遊web伺服器集群,之後再將上遊web伺服器的響應轉發給客戶端。在這個過程中,代理伺服器對於客戶端來說就相當於 web 伺服器,上遊web伺服器對客戶端來說是透明的。具體處理流程如圖1 所示。