搜尋
首頁運維NginxCentOS如何設定Nginx反向代理

CentOS如何設定Nginx反向代理

一、反向代理及示範環境描述

#1、反向代理

反向代理是一種代理伺服器,透過代表客戶端從一個或多個伺服器檢索資源。將這些資源重新傳送給客戶端,就好像它們從Web伺服器本身傳回一樣。與正向代理相反,正向代理是與其關聯的客戶端聯繫任何伺服器的中介,反向代理是任何用戶端與其關聯的伺服器進行聯繫的中介。

有關正向代理可參考:基於CentOS 7配置Nginx正向代理

2、本示範中的幾個伺服器

CentOS如何設定Nginx反向代理

二、常規反向代理程式設定

1、後端伺服器設定(Apache)

後端Apache伺服器主機名稱及IP

# hostname centos7-web.example.com# more /etc/redhat-release CentOS Linux release 7.2.1511 (Core)# ip addr|grep inet|grep global inet 172.24.8.128/24 brd 172.24.8.255 scope global eno16777728# systemctl start httpd.service# echo "This is a httpd test page.">/var/www/html/index.html# curl http://localhost This is a httpd test page.

2、前端Nginx反向代理伺服器設定

前端Nginx伺服器主機名稱及IP

# hostname centos7-router

 # more /etc/redhat-release CentOS Linux release 7.2.1511 (Core)
 # ip addr |grep inet|grep global inet 172.24.8.254/24 brd 172.24.8.255 scope global eno16777728
 inet 192.168.1.175/24 brd 192.168.1.255 scope global dynamic eno33554960

Nginx版本

# nginx -V nginx version: nginx/1.10.2

新增一個新的設定檔用作反向代理

# vim /etc/nginx/conf.d/reverse_proxy.conf server {
   listen 8090;
   server_name localhost;

 location / {
   proxy_pass http://172.24.8.128; ###反向代理核心指令   proxy_buffers 256 4k;
   proxy_max_temp_file_size 0;
   proxy_connect_timeout 30;

   proxy_cache_valid 200 302 10m;
   proxy_cache_valid 301 1h;
   proxy_cache_valid any 1m;
   }
 }# systemctl reload nginx# ss -nltp|grep nginx|grep 8090LISTEN 0 128 *:8090 *:* users:(("nginx",pid=78023,fd=8),("nginx",pid=78021,fd=8))# curl http://localhost:8090 ##基于本地测试This is a httpd test page.

查看Apache伺服器日誌

# more /var/log/httpd/access_log ##请求IP地址为172.24.8.254,当从其他机器请求时也是172.24.8.254这个IP172.24.8.254 - - [30/Oct/2017:14:02:38 +0800] "GET / HTTP/1.0" 200 27 "-" "curl/7.29.0"

3、反向代理伺服器及後端伺服器日誌格式設定

為Nginx伺服器新增proxy_set_header指令,修改後如下

# grep proxy_set_header -B2 /etc/nginx/conf.d/reverse_proxy.conf location / {
   proxy_pass http://172.24.8.128;
   proxy_set_header X-Real-IP $remote_addr;
   }# systemctl reload nginx.service

後端伺服器Apache日誌格式設定

# vim /etc/http/conf/httpd.conf# LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined #注释此行,添加下一行   LogFormat "%{X-Real-IP}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined #关键描述 {X-Real-IP}i# ip addr|grep inet|grep global    #从1.132主机访问 inet 192.168.1.244/24 brd 192.168.1.255 scope global eth0# curl http://192.168.1.175:8090  #从1.244主机访问 This is a httpd test page#再次查看apache访问日志,如下,不再是代理服务器IP地址,此时显示为1.244 192.168.1.244 - - [30/Oct/2017:15:49:07 +0800] "GET / HTTP/1.0" 200 27 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu)
 libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh3/1.4.2"

三、基於目錄符合反向代理

後端伺服器採用Nginx的設定

# more /etc/redhat-release ##os平台及ip地址 CentOS release 6.7 (Final)# ip addr|grep eth0|grep global inet 192.168.1.132/24 brd 192.168.1.255 scope global eth0# nginx -v ##nginx版本 nginx version: nginx/1.10.2# mkdir -pv /usr/share/nginx/html/images ##创建图片目录 mkdir: created directory `/usr/share/nginx/html/images'

# cp /usr/share/backgrounds/nature/*.jpg /usr/share/nginx/html/images/. ##复制图片文件

# cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bk
# vim /etc/nginx/conf.d/default.conf ##此处直接修改缺省配置文件

 server {
 listen 80 default_server;
 listen [::]:80 default_server;
 server_name _;
 root /usr/share/nginx/html;

# Load configuration files for the default server block.
 include /etc/nginx/default.d/*.conf;

 location / {
   }

 location /images {
   alias /usr/share/nginx/html/images; ##此处配置了别名
   }

 error_page 404 /404.html;
 location = /40x.html {
   }

 error_page 500 502 503 504 /50x.html;
 location = /50x.html {
   }
 }

# /etc/init.d/nginx reload
Reloading nginx: [ OK ]

前端Nginx設定

# vim /etc/nginx/conf.d/reverse_proxy.conf server { listen 8090; server_name localhost; location / {   proxy_pass http://172.24.8.128;   proxy_set_header X-Real-IP $remote_addr;   } location /images { ##将images目录下的文件代理至192.168.1.132   proxy_pass http://192.168.1.132;   proxy_set_header X-Real-IP $remote_addr;   } }# systemctl reload nginx

#驗證代理程式情況,在ip為192.168.1.244測試對images目錄下的jpg檔案請求

# ip addr|grep inet|grep global inet 192.168.1.244/24 brd 192.168.1.255 scope global eth0# curl -I http://192.168.1.175:8090/images/Garden.jpg HTTP/1.1 200 OK Server: nginx/1.12.2 Date: Tue, 31 Oct 2017 01:48:18 GMT Content-Type: image/jpeg Content-Length: 264831 Connection: keep-alive Last-Modified: Mon, 30 Oct 2017 08:21:28 GMT ETag: "59f6e108-40a7f" Accept-Ranges: bytes

四、基於特定檔案類型的反向代理程式設定

php伺服器端設定(ip 192.168.1.132)

# ss -nltp|grep php LISTEN 0 128 192.168.1.132:9000 *:* users:(("php-fpm",7147,8),("php-fpm",7148,0),("php-fpm",7149,0))# mkdir -pv /data ###存放php代码# echo "/data 192.168.1.0/24(rw)" >/etc/exports# /etc/init.d/rpcbind start# /etc/init.d/nfslock start# /etc/init.d/nfs start # echo "" > /data/index.php

Nginx代理端設定(ip 192.168.1.175)

# mkdir /data# mount -t nfs 192.168.1.132:/data /data# ls /data index.php# vim /etc/nginx/conf.d/reverse_proxy.conf server { listen 8090; server_name localhost; location / {   proxy_pass http://172.24.8.128;   proxy_set_header X-Real-IP $remote_addr;   } location /images {   proxy_pass http://192.168.1.132;   proxy_set_header X-Real-IP $remote_addr;   } location ~ \.php$ {   root /data;   fastcgi_pass 192.168.1.132:9000;   fastcgi_index index.php;   fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;   include fastcgi_params;   } }# systemctl restart nginx

測試反向代理至php

[root@ydq05 ~]# ip addr|grep inet|grep global inet 192.168.1.244/24 brd 192.168.1.255 scope global eth0 [root@ydq05 ~]# curl -I http://192.168.1.175:8090/index.php HTTP/1.1 200 OK Server: nginx/1.12.2 Date: Tue, 31 Oct 2017 03:22:59 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Powered-By: PHP/5.6.0

五、基於upstream 配置反向代理至tomcat

#Nginx upstream指令也可以將請求代理到後端伺服器如下範例,結合upstream指令示範將其代理到tomcat

# vim /etc/nginx/conf.d/tomcat.confupstream app {
               server localhost:8080;
               keepalive 32;
}

server {
   listen 80;
   server_name localhost;
   location / {
       proxy_set_header Host $host;
       proxy_set_header x-for $remote_addr;
       proxy_set_header x-server $host;
       proxy_set_header x-agent $http_user_agent;
       proxy_pass http://app;
   }
}

[root@node132 conf.d]# ss -nltp|grep javaLISTEN    0  1    ::ffff:127.0.0.1:8005  :::*      users:(("java",39559,45))
LISTEN    0  100                :::8009  :::*      users:(("java",39559,43))
LISTEN    0  100                :::8080  :::*      users:(("java",39559,42))

tomcat版本
[root@node132 conf.d]# /usr/local/tomcat/bin/catalina.sh versionUsing CATALINA_BASE:  /usr/local/tomcat
Using CATALINA_HOME:  /usr/local/tomcat
           ....
Server version: Apache Tomcat/7.0.69
Server built:  Apr 11 2016 07:57:09 UTC
Server number:  7.0.69.0
OS Name:        Linux
OS Version:    2.6.32-573.el6.x86_64
Architecture:  amd64
JVM Version:    1.7.0_79-b15
JVM Vendor:    Oracle Corporation

验证结果# curl http://localhost       
       
       
   
   ......

六、proxy模組指令描述

proxy模組的可用設定指令非常多,它們分別用於定義proxy模組工作時的諸多屬性,如連接逾時時長、代理時使用http協定版本等。下面對常用的指令做一個簡單說明。

 

proxy_read_timeout    在連線中斷之前兩次從接收upstream server接收讀取作業的最大間隔時長;

如下面的範例:

proxy_redirect off;
   proxy_set_header Host $host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   client_max_body_size 10m;
   client_body_buffer_size 128k;
   proxy_connect_timeout 30;
   proxy_send_timeout 15;
   proxy_read_timeout 15;

以上是CentOS如何設定Nginx反向代理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:亿速云。如有侵權,請聯絡admin@php.cn刪除
NGINX與Apache:網絡託管和流量管理NGINX與Apache:網絡託管和流量管理Apr 12, 2025 am 12:04 AM

NGINX适合高并发和低资源消耗场景,Apache适用于需要复杂配置和功能扩展的场景。1.NGINX以高性能处理大量并发连接著称。2.Apache以稳定性和丰富模块支持见长。选择时需根据具体需求决定。

NGINX:現代Web應用程序的多功能工具NGINX:現代Web應用程序的多功能工具Apr 11, 2025 am 12:03 AM

NGINXisessentialformodernwebapplicationsduetoitsrolesasareverseproxy,loadbalancer,andwebserver,offeringhighperformanceandscalability.1)Itactsasareverseproxy,enhancingsecurityandperformancebycachingandloadbalancing.2)NGINXsupportsvariousloadbalancingm

NGINX SSL/TLS配置:使用HTTPS確保您的網站NGINX SSL/TLS配置:使用HTTPS確保您的網站Apr 10, 2025 am 09:38 AM

通過Nginx配置SSL/TLS來確保網站安全,需要以下步驟:1.創建基本配置,指定SSL證書和私鑰;2.優化配置,啟用HTTP/2和OCSPStapling;3.調試常見錯誤,如證書路徑和加密套件問題;4.應用性能優化建議,如使用Let'sEncrypt和會話復用。

NGINX面試問題:ACE您的DevOps/System Admin面試NGINX面試問題:ACE您的DevOps/System Admin面試Apr 09, 2025 am 12:14 AM

Nginx是高性能的HTTP和反向代理服務器,擅長處理高並發連接。 1)基本配置:監聽端口並提供靜態文件服務。 2)高級配置:實現反向代理和負載均衡。 3)調試技巧:檢查錯誤日誌和測試配置文件。 4)性能優化:啟用Gzip壓縮和調整緩存策略。

NGINX緩存技術:改善網站性能NGINX緩存技術:改善網站性能Apr 08, 2025 am 12:18 AM

Nginx缓存可以通过以下步骤显著提升网站性能:1)定义缓存区和设置缓存路径;2)配置缓存有效期;3)根据不同内容设置不同的缓存策略;4)优化缓存存储和负载均衡;5)监控和调试缓存效果。通过这些方法,Nginx缓存能减少后端服务器压力,提升响应速度和用户体验。

帶Docker的NGINX:部署和縮放容器化應用程序帶Docker的NGINX:部署和縮放容器化應用程序Apr 07, 2025 am 12:08 AM

使用DockerCompose可以簡化Nginx的部署和管理,通過DockerSwarm或Kubernetes進行擴展是常見的做法。 1)使用DockerCompose定義和運行Nginx容器,2)通過DockerSwarm或Kubernetes實現集群管理和自動擴展。

高級NGINX配置:掌握服務器塊和反向代理高級NGINX配置:掌握服務器塊和反向代理Apr 06, 2025 am 12:05 AM

Nginx的高級配置可以通過服務器塊和反向代理實現:1.服務器塊允許在一個實例中運行多個網站,每個塊獨立配置。 2.反向代理將請求轉發到後端服務器,實現負載均衡和緩存加速。

NGINX性能調整:針對速度和低潛伏期進行優化NGINX性能調整:針對速度和低潛伏期進行優化Apr 05, 2025 am 12:08 AM

Nginx性能調優可以通過調整worker進程數、連接池大小、啟用Gzip壓縮和HTTP/2協議、使用緩存和負載均衡來實現。 1.調整worker進程數和連接池大小:worker_processesauto;events{worker_connections1024;}。 2.啟用Gzip壓縮和HTTP/2協議:http{gzipon;server{listen443sslhttp2;}}。 3.使用緩存優化:http{proxy_cache_path/path/to/cachelevels=1:2k

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境