天天看點

Linux服務搭建篇:Nginx反向代理原理與案例詳解

一、什麼是正向代理

舉個栗子:

我們在校外、公司外,是通路不到學校、公司的内網的,但是我們想要通路内網資源時,會用到VPN。而一般内網會存在一個VPN伺服器,我們使用VPN其實就是讓内網的VPN伺服器代替我們去進行通路(VPN伺服器位于内網是可以通路内網資源的)。這其實就是一種正向代理,通過内網VPN伺服器代理用戶端進行請求。

正向代理: 如果把區域網路外的 Internet 想象成一個巨大的資源庫,則區域網路中的用戶端要通路 Internet,則需要通過代理伺服器來通路,這種代理服務就稱為正向代理。下面是正向代理的原理圖。

由于工作環境原因,日常工作隻能局限于機關的區域網路,如果想要通路網際網路,怎麼辦呢?這就需要用到正向代理。本人經常用正向代理來進行上網。

Linux服務搭建篇:Nginx反向代理原理與案例詳解

二、什麼是反向代理

反向代理: 看下面原理圖,就一目了然。其實用戶端對代理是無感覺的,因為用戶端不需要任何配置就可以通路,我們隻需要将請求發送到反向代理伺服器,由反向代理伺服器去選擇目标伺服器擷取資料後,在傳回給用戶端,此時反向代理伺服器和目标伺服器對外就是一個伺服器,暴露的是代理伺服器位址,隐藏了真實伺服器 IP 位址。

Linux服務搭建篇:Nginx反向代理原理與案例詳解

正向代理和反向代理的差別,一句話就是:如果我們用戶端自己用,就是正向代理。如果實在伺服器用,我們使用者無感覺,就是反向代理。

三、實驗環境搭建

3.1 實驗環境

這裡準備了三台虛拟機來做這個案例,一個節點安裝Nginx,其他兩個節點安裝Tomcat,通過Nginx服務做反向代理,通路tomcat

作業系統版本 IP位址 角色
Centos7.6 192.168.88.10 Nginx,tomcat
Centos7.6 192.168.88.20 Tomcat1
Centos7.6 192.168.88.30 Tomcat2
Linux服務搭建篇:Nginx反向代理原理與案例詳解

伺服器需要開放端口,或者直接關閉防火牆,雲伺服器的話建議開端口,不要關防火牆

3.2 在192.168.88.10節點安裝Nginx服務

添加nginx yum源

Linux服務搭建篇:Nginx反向代理原理與案例詳解
Linux服務搭建篇:Nginx反向代理原理與案例詳解

建立新的yum緩存

Linux服務搭建篇:Nginx反向代理原理與案例詳解

檢視一下有沒有可以安裝的nginx

Linux服務搭建篇:Nginx反向代理原理與案例詳解

使用yum安裝nginx

Linux服務搭建篇:Nginx反向代理原理與案例詳解

安裝完成,啟動nginx服務

Linux服務搭建篇:Nginx反向代理原理與案例詳解
Linux服務搭建篇:Nginx反向代理原理與案例詳解

完成安裝!!!

3.3 Nginx配置檔案

在學習 Nginx 之前,我們要熟知它的配置檔案。畢竟,我們下面需要做的所有配置(反向代理、負載均衡、動靜分離等),都是基于它的配置檔案。

Nginx 預設的配置檔案是在安裝目錄下的 conf 目錄下,後續對 Nginx 的使用基本上都是對此配置檔案進行相應的修改。完整的配置檔案,可以看一下文章最後。修改過nginx.conf配置檔案,記得要重新開機Nginx服務

配置檔案中有很多#号,該符号表示注釋内容,去掉所有以 # 開頭的段落,精簡之後的配置檔案内容如下(PS:其實注釋掉的地方,都是一些功能的使用代碼,需要用到的時候,取消注釋即可):

worker_processes 1;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

server {

listen 80;

server_name localhost;

location / {

root html;

index index.html index.htm;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

去掉注釋資訊後,可以将 nginx.conf 配置檔案分為三部分:

第一部分:全局塊

worker_processes 1;

從配置檔案開始到 events 塊之間的内容,主要會設定一些影響 Nginx 伺服器整體運作的配置指令,主要包括:配置運作 Nginx 伺服器的使用者(組)、允許生成的 worker process 數,程序 PID 存放路徑、日志存放路徑和類型以及配置檔案的引入等。

上面這行 worker_processes 配置,這是 Nginx 伺服器并發處理服務的關鍵配置,該值越大,可以支援的并發處理量也越多,但是會受到硬體、軟體等裝置的制約。

第二部分:events 塊

events {

worker_connections 1024;

}

events 塊涉及的指令主要影響 Nginx 伺服器與使用者的網絡連接配接,常用的設定包括:是否開啟對多 work process下的網絡連接配接進行序列化,是否允許同時接收多個網絡連接配接,選取哪種事件驅動模型來處理連接配接請求,每個 wordprocess 可以同時支援的最大連接配接數等。

上述例子就表示每個 work process 支援的最大連接配接數為 1024。這部分的配置對 Nginx 的性能影響較大,在實際中應該靈活配置。

第三部分:http 塊

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

server {

listen 80;

server_name localhost;

location / {

root html;

index index.html index.htm;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

這部分是 Nginx 伺服器配置中最頻繁的部分,代理、緩存和日志定義等絕大多數功能和第三方子產品的配置都在這裡。需要注意的是:http 塊也可以包括 http 全局塊、server 塊。下面的反向代理、動靜分離、負載均衡都是在這部分中配置

四、反向代理如何配置

4.1 反向代理執行個體一

在192.168.88.10節點安裝tomcat服務

直接使用yum安裝,centos預設yum源就有tomcat

yum install -y tomcat

Linux服務搭建篇:Nginx反向代理原理與案例詳解

安裝預設浏覽器管理界面 yum install -y tomcat-webapps tomcat-admin-webapps

Linux服務搭建篇:Nginx反向代理原理與案例詳解

啟動tomcat,并設定開機自啟動

Linux服務搭建篇:Nginx反向代理原理與案例詳解

通路tomcat首頁

Linux服務搭建篇:Nginx反向代理原理與案例詳解

開始配置反向代理案例一

案例一僅在一個節點上完成,分别安裝nginx和tomcat,使用nginx做代理,真正的服務部署在tomcat上。

找到nginx的配置檔案,添加以下内容,注意格式:

server {

listen 80;

server_name 192.168.88.10;

location / {

proxy_pass http://127.0.0.1:8080;

}

}

Linux服務搭建篇:Nginx反向代理原理與案例詳解

添加之後重新開機nginx,讓配置檔案生效

systemctl restart nginx

Linux服務搭建篇:Nginx反向代理原理與案例詳解

然後我們再次通路192.168.88.10的80端口,可以看到已經跳轉到tomcat服務了,這樣一個簡單的反向代理就配置完成了

Linux服務搭建篇:Nginx反向代理原理與案例詳解

4.2 反向代理案例二

這個相對進階一點,使用3個節點,在192.168.88.10節點配置nginx,實作從192.168.88.10節點跳轉到192.168.88.20和192.168.88.30節點的tomcat。

192.168.88.10節點的nginx在上面的案例已經安裝完成,這裡就不贅述了,安裝其他兩個節點的tomcat,安裝過程和案例一相同

yum install -y tomcat

yum install -y tomcat-webapps tomcat-admin-webapps

192.168.88.20節點的tomcat

Linux服務搭建篇:Nginx反向代理原理與案例詳解

192.168.88.30節點tomcat

Linux服務搭建篇:Nginx反向代理原理與案例詳解

修改一下兩個節點的tomcat首頁檔案,做一下區分

Tomcat首頁檔案位置(yum安裝情況)/var/lib/tomcat/webapps/ROOT/index.jsp

在首頁檔案随意加一個标記即可,兩個節點做法一樣,修改之後重新開機tomcat

Linux服務搭建篇:Nginx反向代理原理與案例詳解

4.3 開始配置反向代理

編輯/etc/nginx/nginx.conf添加以下内容

vi /etc/nginx/nginx.conf

Linux服務搭建篇:Nginx反向代理原理與案例詳解

完成後重新開機nginx服務

Linux服務搭建篇:Nginx反向代理原理與案例詳解

通路代理伺服器

Linux服務搭建篇:Nginx反向代理原理與案例詳解

重新整理一下頁面再看看

Linux服務搭建篇:Nginx反向代理原理與案例詳解

嘗試down掉其中一個tomcat

Linux服務搭建篇:Nginx反向代理原理與案例詳解

再次通路代理伺服器

Linux服務搭建篇:Nginx反向代理原理與案例詳解

現在就隻有一台tomcat服務了,無論怎麼重新整理都隻能通路192.168.88.20節點的tomcat,nginx反向代理案例到此結束!!!有不對的地方希望不吝賜教,歡迎在評論區留言,分享你的看法。

繼續閱讀