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