Nginx Proxy 代理測試的實現(xiàn)
一. 實驗準備
關(guān)閉防火墻和selinux,準備三臺同一網(wǎng)段的虛擬機
localhost | Roucky_linux9.4 | 192.168.226.20 |
localhost | Roucky_linux9.4 | 192.168.226.21 |
localhost | Roucky_linux9.4 | 192.168.226.22 |
三臺服務(wù)器都配置官方的nginx源并下載和啟動
sudo tee /etc/yum.repos.d/nginx.repo << 'EOF' [nginx-stable] name=nginx stable repo baseurl=https://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key [nginx-mainline] name=nginx mainline repo baseurl=https://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key EOF
yum install -y nginx systemctl enable --now nginx
此時三臺服務(wù)器都可以正常開啟
二. 配置反向代理
正向代理和反向代理對比示意圖
兩者的區(qū)別在于代理的對象不一樣:
正向代理中代理的對象是客戶端,proxy和client同屬一個LAN,對server透明;
反向代理中代理的對象是服務(wù)端,proxy和server同屬一個LAN,對client透明。
現(xiàn)讓192.168.226.20做客戶端 ,192.168.226.21做代理服務(wù)器
對192.168.226.20做如下配置:
編輯配置文件/etc/nginx/conf.d/default.conf
vim /etc/nginx/conf.d/default.conf #修改配置文件為如下: server { listen 80; server_name localhost; location / { proxy_pass http://192.168.226.21; # 設(shè)置代理目標的地址 proxy_redirect default; # 開啟默認的代理重定向 proxy_set_header Host $http_host; # 設(shè)置代理請求中的 Host 頭部 proxy_set_header X-Real-IP $remote_addr; # 設(shè)置真實客戶端 IP 地址的頭部 proxy_set_header REMOTE-HOST $remote_addr; # 設(shè)置遠程主機的頭部,此處與 X-Real-IP 重復(fù)了 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 設(shè)置經(jīng)過的代理 IP 地址的頭部 proxy_connect_timeout 30; # 設(shè)置與后端服務(wù)器建立連接的超時時間為30秒 proxy_send_timeout 60; # 設(shè)置向后端服務(wù)器發(fā)送請求的超時時間為60秒 proxy_read_timeout 60; # 設(shè)置從后端服務(wù)器讀取響應(yīng)的超時時間為60秒 proxy_buffering on; # 開啟代理緩沖 proxy_buffer_size 32k; # 設(shè)置單個緩沖區(qū)的大小為32KB proxy_buffers 4 128k; # 設(shè)置用于存儲響應(yīng)數(shù)據(jù)的緩沖區(qū)的數(shù)量和大小 proxy_busy_buffers_size 256k; # 設(shè)置活躍緩沖區(qū)的最大大小為256KB proxy_max_temp_file_size 256k; # 設(shè)置臨時文件的最大大小為256KB } error_page 500 502 503 504 /50x.html; # 定義處理5xx錯誤的頁面 location = /50x.html { root /usr/share/nginx/html; # 指定50x錯誤頁面的根目錄 } }
測試Nginx配置文件
nginx -t
重新加載Nginx配置
nginx -s reload
現(xiàn)在在代理服務(wù)器192.168.226.21上查看Nginx訪問日志
tail -f /var/log/nginx/access.log
整體解釋
日志條目顯示了來自IP地址 192.168.226.20
的客戶端在2024年6月18日19:11:57(+0800時區(qū))發(fā)起的多個HTTP請求。這些請求都是對服務(wù)器根路徑 /
使用HTTP/1.0方法發(fā)起的 GET
請求。服務(wù)器返回的HTTP狀態(tài)碼是 304
,表示資源未修改,客戶端可以使用緩存的版本,因此響應(yīng)大小為 0
字節(jié)??蛻舳说挠脩舸碜址砻魉褂玫氖荂hrome瀏覽器。X-Forwarded-For
字段顯示客戶端的真實IP地址為 192.168.226.1
。
簡單講記錄了來自192.168.226.20的客戶端的IP的記錄,但是真實請求的IP是192.168.226.1
三. 配置二層代理
在之前的實驗里,我用windows客戶端訪問192.168.226.20,對192.168.226.20作量一層代理,一層代理服務(wù)器為192.168.226.21,現(xiàn)在我要講192.168.226.21的下一層代理設(shè)置為192.168.226.22,即實現(xiàn)二層代理。
對192.168.226.22編輯配置文件
vim /etc/nginx/conf.d/default.conf #修改配置文件為如下: server { listen 80; server_name localhost; location / { proxy_pass http://192.168.226.22; proxy_redirect default; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 30; proxy_send_timeout 60; proxy_read_timeout 60; proxy_buffering on; proxy_buffer_size 32k; proxy_buffers 4 128k; proxy_busy_buffers_size 256k; proxy_max_temp_file_size 256k; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
測試Nginx配置文件
nginx -t
重新加載Nginx配置
nginx -s reload
現(xiàn)在在代理服務(wù)器192.168.226.22上查看Nginx訪問日志
tail -f /var/log/nginx/access.log
查看192.168.226.21的日志:
查看192.168.226.20的日志:
修改默認發(fā)布頁面用來辨別
#對192.168.226.20修改 echo "webserver1" > /usr/share/nginx/html/index.html systemctl restart nginx #對192.168.226.21修改 echo "webserver2" > /usr/share/nginx/html/index.html systemctl restart nginx #對192.168.226.22修改 echo "webserver3" > /usr/share/nginx/html/index.html systemctl restart nginx
瀏覽器刷新頁面訪問
實際上訪問192.168.226.20是192.168.226.22提供的服務(wù)。
解釋流程
- Windows客戶端 發(fā)送請求到
http://192.168.226.20/
。 - Nginx 1 (在192.168.226.21) 接收到請求,根據(jù)配置將其轉(zhuǎn)發(fā)到目標服務(wù)器 192.168.226.22。
- Nginx 2 (在192.168.226.22) 接收從Nginx 1轉(zhuǎn)發(fā)的請求,并根據(jù)其配置將請求轉(zhuǎn)發(fā)到最終的應(yīng)用服務(wù)器,即也是192.168.226.22。
同理,三層nginx的代理也是往上疊加。
到此這篇關(guān)于Nginx Proxy 代理測試的實現(xiàn)的文章就介紹到這了,更多相關(guān)Nginx Proxy 代理測試內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Nginx服務(wù)器的反向代理proxy_pass配置方法講解
- Nginx代理proxy pass配置去除前綴的實現(xiàn)
- nginx 反向代理之 proxy_pass的實現(xiàn)
- nginx配置中proxy_pass反向代理502的bug記錄
- nginx配置proxy_pass代理轉(zhuǎn)發(fā)時報404問題
- nginx反向代理proxy_pass遇到的死循環(huán)問題
- nginx代理參數(shù)proxy_pass的實現(xiàn)
- Nginx?反向代理緩存(proxy_cache)的實現(xiàn)
- nginx反向代理proxy_set_header
- Nginx Proxy Manager輕松搭建反向代理的實現(xiàn)
相關(guān)文章
Nginx內(nèi)網(wǎng)單機反向代理的實現(xiàn)
本文主要介紹了Nginx內(nèi)網(wǎng)單機反向代理的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11nginx搭建圖片服務(wù)器的過程詳解(root和alias的區(qū)別)
這篇文章主要介紹了nginx搭建圖片服務(wù)器(root和alias的區(qū)別)的過程,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10Linux查看nginx安裝目錄和配置文件路徑的實現(xiàn)
本文主要介紹了Linux查看nginx安裝目錄和配置文件路徑的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01