¡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:
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
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):
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:
-p
La función del comando es vincular el puerto de la máquina virtual al puerto del contenedor
-v
La función del comando es hacer que la máquina virtual y el contenedor compartan el mismo directorio, $PWD
indicando 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:
Ahora lo que queremos es a través del www.proxy.com
acceso 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\etc
en el hosts
archivo de directorio
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.com
resuelve lo que envía a 192.168.181.5
esta 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
. ^ _ ^