一、什麼是正向代理
舉個栗子:
我們在校外、公司外,是通路不到學校、公司的内網的,但是我們想要通路内網資源時,會用到VPN。而一般内網會存在一個VPN伺服器,我們使用VPN其實就是讓内網的VPN伺服器代替我們去進行通路(VPN伺服器位于内網是可以通路内網資源的)。這其實就是一種正向代理,通過内網VPN伺服器代理用戶端進行請求。
正向代理: 如果把區域網路外的 Internet 想象成一個巨大的資源庫,則區域網路中的用戶端要通路 Internet,則需要通過代理伺服器來通路,這種代理服務就稱為正向代理。下面是正向代理的原理圖。
由于工作環境原因,日常工作隻能局限于機關的區域網路,如果想要通路網際網路,怎麼辦呢?這就需要用到正向代理。本人經常用正向代理來進行上網。
二、什麼是反向代理
反向代理: 看下面原理圖,就一目了然。其實用戶端對代理是無感覺的,因為用戶端不需要任何配置就可以通路,我們隻需要将請求發送到反向代理伺服器,由反向代理伺服器去選擇目标伺服器擷取資料後,在傳回給用戶端,此時反向代理伺服器和目标伺服器對外就是一個伺服器,暴露的是代理伺服器位址,隐藏了真實伺服器 IP 位址。
正向代理和反向代理的差別,一句話就是:如果我們用戶端自己用,就是正向代理。如果實在伺服器用,我們使用者無感覺,就是反向代理。
三、實驗環境搭建
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 |
伺服器需要開放端口,或者直接關閉防火牆,雲伺服器的話建議開端口,不要關防火牆
3.2 在192.168.88.10節點安裝Nginx服務
添加nginx yum源
建立新的yum緩存
檢視一下有沒有可以安裝的nginx
使用yum安裝nginx
安裝完成,啟動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
安裝預設浏覽器管理界面 yum install -y tomcat-webapps tomcat-admin-webapps
啟動tomcat,并設定開機自啟動
通路tomcat首頁
開始配置反向代理案例一
案例一僅在一個節點上完成,分别安裝nginx和tomcat,使用nginx做代理,真正的服務部署在tomcat上。
找到nginx的配置檔案,添加以下内容,注意格式:
server { listen 80; server_name 192.168.88.10; location / { proxy_pass http://127.0.0.1:8080; } } |
添加之後重新開機nginx,讓配置檔案生效
systemctl restart nginx
然後我們再次通路192.168.88.10的80端口,可以看到已經跳轉到tomcat服務了,這樣一個簡單的反向代理就配置完成了
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
192.168.88.30節點tomcat
修改一下兩個節點的tomcat首頁檔案,做一下區分
Tomcat首頁檔案位置(yum安裝情況)/var/lib/tomcat/webapps/ROOT/index.jsp
在首頁檔案随意加一個标記即可,兩個節點做法一樣,修改之後重新開機tomcat
4.3 開始配置反向代理
編輯/etc/nginx/nginx.conf添加以下内容
vi /etc/nginx/nginx.conf
完成後重新開機nginx服務
通路代理伺服器
重新整理一下頁面再看看
嘗試down掉其中一個tomcat
再次通路代理伺服器
現在就隻有一台tomcat服務了,無論怎麼重新整理都隻能通路192.168.88.20節點的tomcat,nginx反向代理案例到此結束!!!有不對的地方希望不吝賜教,歡迎在評論區留言,分享你的看法。