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ù)器都可以正常開(kāi)啟

二. 配置反向代理
正向代理和反向代理對(duì)比示意圖
兩者的區(qū)別在于代理的對(duì)象不一樣:
正向代理中代理的對(duì)象是客戶(hù)端,proxy和client同屬一個(gè)LAN,對(duì)server透明;
反向代理中代理的對(duì)象是服務(wù)端,proxy和server同屬一個(gè)LAN,對(duì)client透明。

現(xiàn)讓192.168.226.20做客戶(hù)端 ,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; # 開(kāi)啟默認(rèn)的代理重定向
proxy_set_header Host $http_host; # 設(shè)置代理請(qǐng)求中的 Host 頭部
proxy_set_header X-Real-IP $remote_addr; # 設(shè)置真實(shí)客戶(hù)端 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)過(guò)的代理 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; # 開(kāi)啟代理緩沖
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ò)誤的頁(yè)面
location = /50x.html {
root /usr/share/nginx/html; # 指定50x錯(cuò)誤頁(yè)面的根目錄
}
}
測(cè)試Nginx配置文件
nginx -t
重新加載Nginx配置
nginx -s reload
現(xiàn)在在代理服務(wù)器192.168.226.21上查看Nginx訪(fǎng)問(wèn)日志
tail -f /var/log/nginx/access.log

整體解釋
日志條目顯示了來(lái)自IP地址 192.168.226.20 的客戶(hù)端在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,表示資源未修改,客戶(hù)端可以使用緩存的版本,因此響應(yīng)大小為 0 字節(jié)??蛻?hù)端的用戶(hù)代理字符串表明它使用的是Chrome瀏覽器。X-Forwarded-For 字段顯示客戶(hù)端的真實(shí)IP地址為 192.168.226.1。
簡(jiǎn)單講記錄了來(lái)自192.168.226.20的客戶(hù)端的IP的記錄,但是真實(shí)請(qǐng)求的IP是192.168.226.1
三. 配置二層代理
在之前的實(shí)驗(yàn)里,我用windows客戶(hù)端訪(fǎng)問(wèn)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訪(fǎng)問(wèn)日志
tail -f /var/log/nginx/access.log

查看192.168.226.21的日志:

查看192.168.226.20的日志:

修改默認(rèn)發(fā)布頁(yè)面用來(lái)辨別
#對(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
瀏覽器刷新頁(yè)面訪(fǎng)問(wèn)

實(shí)際上訪(fǎng)問(wèn)192.168.226.20是192.168.226.22提供的服務(wù)。
解釋流程
- Windows客戶(hù)端 發(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問(wèn)題
- nginx反向代理proxy_pass遇到的死循環(huán)問(wè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不關(guān)機(jī)升級(jí)(平滑升級(jí))的實(shí)戰(zhàn)指南
隨著 nginx 越來(lái)越流行,并且 nginx 的優(yōu)勢(shì)也越來(lái)越明顯,nginx 的版本迭代也來(lái)時(shí)加速模式,伴隨著 nginx 的廣泛應(yīng)用,版本升級(jí)必然越來(lái)越快,線(xiàn)上業(yè)務(wù)不能停,所以本文給大家介紹了Nginx不關(guān)機(jī)升級(jí)(平滑升級(jí))的實(shí)戰(zhàn)指南,需要的朋友可以參考下2025-09-09
keepalived+lvs 對(duì)nginx做負(fù)載均衡和高可用的操作方法
這篇文章主要介紹了keepalived+lvs 對(duì)nginx做負(fù)載均衡和高可用的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-12-12
nginx上設(shè)置html不緩存的方法實(shí)現(xiàn)
前端項(xiàng)目發(fā)布以后,經(jīng)常會(huì)遇到訪(fǎng)問(wèn)不到最新的版本,這主要是由于我們項(xiàng)目的入口文件index.html被瀏覽器或者代理緩存了,本文主要介紹了nginx上設(shè)置html不緩存,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02
基于nginx獲取代理服務(wù)ip以及客戶(hù)端真實(shí)ip詳解
最近在研究nginx中如何獲取真實(shí)客戶(hù)端IP的方法,下面這篇文章主要給大家介紹了基于nginx獲取代理服務(wù)ip以及客戶(hù)端真實(shí)ip的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
詳解使用Nginx和uWSGI配置Python的web項(xiàng)目的方法
這篇文章主要介紹了使用Nginx和uWSGI配置Python的web項(xiàng)目的方法,與其他CGI連接方式相比uwsgi的連接性能也較為出眾,需要的朋友可以參考下2015-12-12
寶塔nginx部署前端頁(yè)面刷新報(bào)404錯(cuò)誤解決辦法
使用nginx部署前端項(xiàng)目是一篇非常詳細(xì)的教程,旨在幫助初學(xué)者使用Nginx來(lái)部署前端項(xiàng)目,這篇文章主要給大家介紹了關(guān)于寶塔nginx部署前端頁(yè)面刷新報(bào)404錯(cuò)誤的解決辦法,需要的朋友可以參考下2024-03-03

