¡Comprenda e implemente el proxy inverso de Nginx en minutos!


Prefacio: Los puntos de conocimiento involucrados en este artículo son: comandos básicos de CentOS7, operaciones comunes de Docker, volúmenes de datos de contenedor, enlace de puerto y enlace de nombre de dominio, proxy inverso, si usa un sistema operativo diferente y métodos diferentes a los de este artículo Relaciones, puede mire el catálogo de artículos para comprender qué pasos generalmente requiere un proxy inverso.

1. Concepto

Antes de implementar un proxy inverso , primero debemos saber qué es un proxy directo y comprender su función a través de las diferencias entre ellos.

1.1 Proxy de reenvío

como muestra la imagen:

Inserte la descripción de la imagen aquí

No es difícil ver que en el ejemplo anterior, la PC en la LAN envía la solicitud al servidor proxy, y luego el servidor proxy reenvía la solicitud a Internet.

1.2, proxy inverso

Inserte la descripción de la imagen aquí

No es difícil ver que en el ejemplo anterior, la solicitud de Internet primero pasará por el servidor proxy y luego determinará qué sitio web devolver de acuerdo con el servidor proxy.

1.3. Comparación de los dos

Tipos de la diferencia
Proxy de reenvío Cliente proxy , solicitudes de reenvío unificadas
Proxy inverso Servidor proxy , distribuir las solicitudes de manera uniforme

2. Servidor proxy Nginx

2.1, instale el espejo Nginx

1. Buscar espejo nginx

docker search nginx

2. Extraiga la imagen nginx (nuevamente, debe configurar la fuente para mejorar la velocidad de descarga de la imagen de la ventana acoplable, por favor Baidu para más detalles)

docker pull nginx

2.2, preparar la configuración relacionada con Nginx

1. Cree un directorio nginx en el directorio / root para almacenar información de datos nginx

mkdir ~/nginx

2. Entrar en el catálogo

cd ~/nginx

3. Cree un directorio conf.d en el directorio nginx (utilizado para almacenar archivos de configuración relacionados con el proxy inverso)

mkdir conf.d

4. Cree el archivo de configuración nginx.conf en el directorio conf (elija uno de los dos métodos)

vi nginx.conf

o

vim nginx.conf

5. Agregue el siguiente contenido de configuración

user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
    
    
	worker_connections 1024;
}
http {
    
    
	include /etc/nginx/mime.types;
	default_type application/octet-stream;
	
	log_format main 	'$remote_addr - $remote_user [$time_local] "$request" '
						'$status $body_bytes_sent "$http_referer" '
						'"$http_user_agent" "$http_x_forwarded_for"';
						
	access_log /var/log/nginx/access.log main;
	
	sendfile on;
	#tcp_nopush on;
	
	keepalive_timeout 65;
	#gzip on;
	include /etc/nginx/conf.d/*.conf;
}

7. Cree un directorio conf en el directorio nginx (almacene la información de configuración de nginx)

mkdir conf

8. Cree el archivo de configuración proxy.conf en el directorio conf.d (configuración relacionada con el proxy inverso)

upstream tomcat-test {
    
    
	server 192.168.181.5:8080;
}

server {
    
    
	listen	80; #port
	server_name	www.proxy.com; #host
	location / {
    
    
		proxy_pass http://tomcat-test;
		index index.html;
	}
}

Explicación del archivo de configuración (la ip debe cambiarse de acuerdo con la ip de su propia máquina virtual):

Inserte la descripción de la imagen aquí

2.3, crea un contenedor

1. Cree un contenedor y configure el puerto, la asignación de directorios (en el directorio nginx)

docker run -id --name=c_nginx \
-p 80:80 \
-p 81:81 \
-p 82:82 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/conf.d:/etc/nginx/conf.d \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx

Explique un poco el archivo de configuración anterior:

-pLa función del comando es vincular el puerto de la máquina virtual al puerto del contenedor

-vLa función del comando es hacer que la máquina virtual y el contenedor compartan el mismo directorio, $PWDindicando el directorio actual. El directorio compartido está en la máquina virtual, no en el contenedor (puede aprender sobre volúmenes de datos)

3. Servidor de prueba Tomcat

3.1, instalar espejo

1. Buscar espejo de tomcat

docker search tomcat

2. Extraiga la imagen de Tomcat

docker pull tomcat

3.2, crear contenedor y directorio tomcat

1. Cree un directorio tomcat en el directorio / root (utilizado para almacenar archivos html)

mkdir ~/tomcat
cd ~/tomcat

2. Cree y edite el archivo index.html (página html para mostrar más tarde)

vi index.html

Ingrese el contenido de la prueba

this is index.html port=8080!!!! 

3. Crear contenedor, establecer puerto, mapeo de directorio

docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat

4. El host realiza la configuración relevante de la asignación de nombres de dominio.

Como se muestra abajo:

Inserte la descripción de la imagen aquí

Ahora lo que queremos es a través del www.proxy.comacceso al nombre de dominio del servidor proxy nginx, la dirección IP del servidor proxy es 192.168.181.5, para que el navegador pueda identificar este dominio, necesitamos configurar el archivo de configuración de la computadora

Este artículo toma el sistema operativo Windows como ejemplo, otros sistemas operativos deben ser Baidu

archivo de asignación de nombre de dominio el sistema de Windows está C:\Windows\System32\drivers\etcen el hostsarchivo de directorio

Inserte la descripción de la imagen aquí

Agregue la siguiente información al archivo:

192.168.181.5 www.proxy.com

El archivo de hosts es equivalente a un servidor DNS, que www.proxy.comresuelve lo que envía a 192.168.181.5esta dirección IP

5. Resultados de la prueba

Reinicie tomcat y nginx

docker restart c_nginx
docker restart c_tomcat

Después de visitar www
Inserte la descripción de la imagen aquí
. ^ _ ^

Supongo que te gusta

Origin blog.csdn.net/weixin_44829930/article/details/109005883
Recomendado
Clasificación