Nginx implementa el reenvío Https 443, el modo de configuración y los registros de pozos de minería

Este domingo, estaba inactivo en casa y quería jugar con nginx . La versión de Nginx que uso es 1.1.7. El servidor es WindowsServer2019DataCenter.

En un proyecto anterior, por solicitudes entre dominios, se resolvió con el proxy nginx. Así que tengo una buena impresión de nginx. Práctica buena herramienta.

1. Primero vaya a Alibaba Cloud o Tencent Cloud para solicitar un certificado SSL gratuito de un año . Las solicitudes son rápidas y no se requiere dinero. Hay muchos métodos específicos en Baidu.

2. Ahora el certificado está implementado en el servidor y existen diferentes tipos de certificados según su contenedor web. Lo que descargué aquí es la versión de Nginx, porque mi prueba es interceptar 443 en Nginx para otro reenvío interno, por lo que se usa en Nginx.

3. Elementos de configuración de Conf del archivo de configuración de Nginx:

# HTTPS server
	server {
        listen 443 ssl http2;
        server_name www.XXXXX.cn;
        
        ssl_certificate     /cert/nginx/nginx_www.XXXXX.cn.pem;
        ssl_certificate_key /cert/nginx/nginx_www.XXXXX.cn.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSV1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_prefer_server_ciphers on;
         
        access_log logs/XXXXX/access.log;
        error_log  logs/XXXXX/error.log;
 
        location / {
            root   html;
            index  index.html index.htm;
        }             
 
        location /shop {
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade"; 
            proxy_pass_header Set-Cookie;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host;
            proxy_redirect off;
 
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Methods "POST, GET,PUT,DELETE, OPTIONS";
            add_header Access-Control-Allow-Headers "Origin, Authorization, Accept";
            add_header Access-Control-Allow-Credentials true;
            
 
            proxy_pass http://localhost:8092/;
        }
 
    }

Hay varios lugares a los que prestar atención durante el proceso de configuración:

3.1, configurar 443 bloques

3.2. Configure la ubicación del certificado SSL. La ubicación aquí es un poco complicada. Asegúrese de tener en cuenta que Nginx se encuentra actualmente en el directorio C:/Nginx/ en el servidor, y el certificado está en el directorio C:/Cert/ , pero después de varias pruebas, encontré esta ruta, no puede escribir la ruta del certificado C:/Cert/XXX, el sistema le indicará: intercepte el nombre de dominio y el método, preste atención para interceptar el nombre de dominio.

BIO_new_file() falló (SSL: error: 0200107B: biblioteca del sistema: fopen: error desconocido: fopen

Obviamente, no se puede encontrar la ruta y no se puede acceder ni abrir el archivo. Si coloca el certificado en el directorio Nginx y escribe la ruta relativa a Nginx.exe, obtendrá el mismo aviso. De todos modos, el camino siempre es incorrecto y no hay manera.


Más tarde, después de revisar el registro de errores de inicio de Nginx, descubrí que esta ruta es una ruta relativa a C:/. Se configura desde el directorio raíz del disco C. No es necesario mantener caracteres como C:/ en el camino Finalmente, el experimento fue exitoso.

Artículo de referencia: https://blog.csdn.net/ken_ding/article/details/78929551

3.3. La ruta de configuración del registro es relativa a la ruta de Nginx.exe. La ruta es la ruta completa. Si hay una carpeta en el medio que no existe, debe crearse con anticipación; de lo contrario, se informará una excepción cuando a partir de.

Después de configurar los pasos anteriores, después de iniciar Nginx, use https para acceder al nombre de dominio y se mostrará la página de Nginx, lo que indica que la configuración de intercepción se realizó correctamente.


————————————————
Declaración de derechos de autor: este artículo es un artículo original del blogger CSDN "ltylove2007", siguiendo el acuerdo de derechos de autor CC 4.0 BY-SA, adjunte el enlace de la fuente original y este declaración para su reimpresión.
Enlace original: https://blog.csdn.net/ltylove2007/article/details/107136902

4. Es seguro configurar el reenvío de sitios web internos, de modo que los sitios web Htpps aún se muestren cuando los usuarios acceden al sistema.

location /shop {
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade"; 
            proxy_pass_header Set-Cookie;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host;
            proxy_redirect off;
 
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Methods "POST, GET,PUT,DELETE, OPTIONS";
            add_header Access-Control-Allow-Headers "Origin, Authorization, Accept";
            add_header Access-Control-Allow-Credentials true;
            
 
            proxy_pass http://localhost:8092/;
        }

Marcado de lugares clave:

4.1 Intercepte la subdirección del nombre de dominio, de modo que se puedan conectar múltiples subsistemas bajo un nombre de dominio, y todos ellos se reenviarán desde este nombre de dominio.

4.2 Para el método de reenvío del sistema interno del agente y la configuración de solicitudes entre dominios, consulte las necesidades de su propio proyecto aquí.

4.3. Finalmente, el agente clave reenvía la dirección interna: configure la configuración del sistema interno. Los marcados que terminan con "/" y los que no terminan con "/" son muy diferentes. Para la descripción específica de la diferencia, consulte el siguiente artículo, por lo que No entraré en detalles aquí. En resumen, con "/", se reenvía directamente. Si no hay dirección de tienda/intercepción empalmada, sin "/", la tienda/ interceptada se reenviará junta durante el proceso de reenvío.

Artículo de referencia: https://blog.csdn.net/Cz_csdn/article/details/104419708
—————————————————

Puede agregar la ruta virtual de /shop a su método de acceso al sistema interno, lo que resuelve perfectamente el problema de la ruta después del reenvío.

おすすめ

転載: blog.csdn.net/w199809w/article/details/125534546