Maison > Opération et maintenance > Nginx > le corps du texte

Comment configurer le proxy inverse Nginx sur CentOS

WBOY
Libérer: 2023-05-17 12:34:17
avant
1941 Les gens l'ont consulté

Comment configurer le proxy inverse Nginx sur CentOS

1. Proxy inverse et description de l'environnement de démonstration

1. 🎜#Un proxy inverse est un serveur proxy qui récupère les ressources d'un ou plusieurs serveurs pour le compte d'un client. Renvoyez ces ressources au client comme si elles étaient renvoyées par le serveur Web lui-même. Contrairement à un proxy direct, qui est un intermédiaire par lequel les clients qui lui sont associés contactent n'importe quel serveur, un proxy inverse est un intermédiaire par lequel tout client contacte son serveur associé.

Pour plus d'informations sur le proxy de transfert, veuillez vous référer à : Configuration du proxy de transfert Nginx basé sur CentOS 7

2. 🎜 🎜#

2. Configuration générale du proxy inverse
Comment configurer le proxy inverse Nginx sur CentOS
1. 🎜🎜#

Nom d'hôte et IP du serveur Apache backend

# 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.
Copier après la connexion

2 Configuration du serveur proxy inverse Nginx frontal

Front. -end Nom d'hôte et IP du serveur Nginx

# 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
Copier après la connexion

Nginx version

# nginx -V nginx version: nginx/1.10.2
Copier après la connexion
Ajouter un nouveau fichier de configuration à utiliser comme proxy inverse

# 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.
Copier après la connexion

View Journal du serveur 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"
Copier après la connexion

3. Paramètres de format de journal du serveur proxy inverse et du serveur backend

Ajouter la commande proxy_set_header au serveur Nginx, modifiée comme suit# 🎜🎜#

# 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
Copier après la connexion

Paramètre du format de journal Apache du serveur backend

# 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"
Copier après la connexion
3 Répertoire correspondant au proxy inverse

Le serveur backend utilise la configuration 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 ]
Copier après la connexion
#🎜. 🎜#Configuration Nginx front-end

# 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
Copier après la connexion

Vérifiez la situation du proxy et testez la demande de fichier jpg dans le répertoire images à l'adresse IP 192.168.1.244

# 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
Copier après la connexion

Four Basé sur un Reverse spécifique. configuration proxy de type de fichier

configuration côté serveur 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
Copier après la connexion

configuration côté proxy 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
Copier après la connexion
# 🎜🎜#Test du proxy inverse vers 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
Copier après la connexion

5. Configurer le proxy inverse sur Tomcat en fonction de l'amont

La commande en amont de Nginx peut également envoyer la requête au serveur backend comme indiqué dans l'exemple suivant, combiné avec des instructions en amont pour démontrer le proxy vers 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       
       
       
   
   ......
Copier après la connexion

6 Description des instructions du module proxy

Il existe de nombreuses instructions de configuration disponibles pour le module proxy, qui sont. utilisé pour définir le travail du module proxy à la fois, telles que la durée du délai d'expiration de la connexion, la version du protocole http utilisée lors du proxy, etc. Ce qui suit est une brève explication des instructions couramment utilisées.

proxy_read_timeout    L'intervalle maximum entre deux opérations de lecture reçues du serveur en amont de réception avant que la connexion ne soit déconnectée

comme suit ; Un exemple de :

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;
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!