Archivo de configuración Nginx y proxy inverso, equilibrio de carga, separación dinámica y estática

ubicación del archivo de configuración nginx

/usr/local/nginx/conf/nginx.conf

Composición del archivo de configuración de Nginx

(1) Bloque global

Desde el comienzo del archivo de configuración hasta el contenido del bloque de eventos, es principalmente para establecer algunas instrucciones de configuración que afectan el funcionamiento general del servidor nginx.
Por ejemplo:
worker_processes 1; cuanto
mayor es el valor de worker_processes, se puede admitir más procesamiento simultáneo y más procesos de trabajo.
Error_log representa la ruta de almacenamiento del registro de errores de nginx

(2) bloque de eventos

Las instrucciones involucradas en el bloque de eventos afectan principalmente a la conexión de red entre el servidor nginx y el usuario. Por
ejemplo:
worker_connections 1024; el número máximo de conexiones admitidas

(3) bloque http

El bloque http se divide en el bloque global http y el bloque del servidor. El bloque
global http:
incluye main.types; introduce un archivo externo -> / main.types pone una gran cantidad de tipos de medios
incluye vhosts / *. conf; introduce un archivo externo -> Importe el archivo de configuración que termina con .conf en el archivo vhosts

Bloque de servidor:
listent: 80; supervisa la raíz del
bloque de ubicación del puerto 89
: / web / abc; envía la solicitud recibida al directorio especificado para solicitar recursos.
index: index.html; De forma predeterminada,
es el punto clave para encontrar el bloque de servidor de archivos relativo en la ruta anterior , principalmente para la configuración de varios nombres de dominio y proyectos, y se puede utilizar para operaciones de proxy inverso.

Caso de proxy inverso

En el servidor, cambie el server_name a la dirección IP específica actual, luego agregue un proxy_pass a la ubicación, escriba la IP del servidor específico y el número de puerto para ser proxy, y espere a que el cliente inicie una solicitud al puerto 80 del nginx servidor, puede proxy directamente a nuestro servidor proxy inverso designado

// 把当前IP的80端口反向代理到当前IP的8080端口
server {
    
    
	listen	80;
	server_name  localhost;

	location / {
    
    
		proxy_pass http://127.0.0.1:8080;
	}
}

Mapeo de rutas de ubicación específicas de Nginx

#优先级关系(越精确,优先级越高)
(location =)  >  (location /xxx/zzz/vvv)  >   (location ^~)	>	(location ~,~*)	 > 	(location /)	

#1. = 匹配
location =/ {
    
    
	#精准匹配,主机名后面不能带任何的的字符串
}

#2. 通用匹配
location /xxx {
    
    
	#匹配所有以xxx开头的路径
}

#3. 正则匹配
location ~ /xxx {
    
    
	# 匹配所有以xxx开头的路径
}

#4. 匹配开头路径
location ^~ /xxx {
    
    
	# 匹配所有以xxx开头的路径
}
#5. ~* \.(gif|jpg|png)$ {
    
    
	# 匹配以gif或者jpg或者png结尾的路径
}

Caso de equilibrio de carga

Agregue la parte ascendente al bloque global http, agregue todos los servidores que necesitan equilibrio de carga y agregue algunas reglas, como el orden de prioridad, etc.
Luego, use proxy_pass en el bloque de servicio para especificar el nombre del balanceador de carga, de la siguiente manera, puede ser el balanceador de carga actual. Cada solicitud recaerá en cada servidor de manera uniforme.
Para obtener detalles específicos, consulte los siguientes artículos resumidos por otros:
descripción detallada en profundidad de Nginx del método de distribución ascendente.
Específicamente, cooperaré con docker para hacer un caso, usaré docker para construir dos servidores nginx y un servidor tomcat, mapee diferentes números de puerto y deje que uno de ellos nginx server haga el balanceo de carga.

# 下载并运行一个nginx服务器,映射端口号8011到80端口
$ docker run -d -p 8011:80 --name some-nginx daocloud.io/library/nginx:latest
# 在运行一个nginx容器,映射端口号8012到80端口,4bb46517cac3 为刚才运行的nginx的容器的镜像id
$ docker run -d -p 8012:80 --name some-nginx1 4bb46517cac3  
# 下载并运行一个tomcat服务器,映射端口号8082到8080端口, todo 注意tomcat的默认路径下的默认文件存在请求js和css,会多次请求服务器,如果用默认的负载均衡方式会导致负载均衡出问题,最好在tomcat下增加一个index.html文件来做测试,这样每一次访问只会请求到一台服务器,可以很直观的看到效果
$ docker run -d -p 8082:8080 --name t8 daocloud.io/library/tomcat:8.5.15-jre8
# 本地把需要做负载均衡的config配置文件先做好
$ vi default.conf
# default.conf nginx配置文件
upstream myServer{
    
    
        server 10.0.2.15:8082;  # IP 换成自己的
        server 10.0.2.15:8012;	# IP 换成自己的
}
server {
    
    
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    location / {
    
    
#        root   /usr/share/nginx/html;
        proxy_pass http://myServer;
        index  index.html index.htm;
    }
}
# 把修改好的配置文件复制到docker的nginx容器(some-nginx)中
$ docker cp ./default.conf some-nginx:/etc/nginx/conf.d/default.conf
# 重启一下
$ docker restart some-nginx

En este punto, la configuración del servidor se ha completado y los resultados se pueden verificar y aceptar accediendo al servidor de equilibrio de carga en el navegador.

Estrategia de equilibrio de carga

Nginx nos proporciona tres estrategias de equilibrio de carga por defecto:
1. Sondeo: Las solicitudes iniciadas por el cliente se distribuyen uniformemente a cada servidor
2. Peso: La solicitud del cliente se asignará de acuerdo con el valor de peso del servidor. Números diferentes
3. ip_hash: En función de las diferentes direcciones IP del cliente que inició la solicitud, siempre enviará la solicitud al servidor especificado. Es decir, si la dirección IP de la solicitud del cliente sigue siendo la misma, el servidor que procesa la solicitud siempre se el mismo

votación

El caso de sondeo es el caso anterior, es muy simple, la siguiente es una descripción de configuración simple

# 需要轮询的Ip及端口号
upstream my_server{
    
    
    server ip:port;
    server ip:port;
}
server {
    
    
    listen       80;
    listen  [::]:80;
    server_name  localhost;

	location / {
    
    
        proxy_pass http://upstream名称/;
    }
}
Pesos

El peso se implementa agregando peso a la parte posterior de cada servidor en el flujo ascendente. Los detalles son los siguientes. Después de configurar lo siguiente, vuelvo a habilitar el servidor nginx con equilibrio de carga creado por Docker y luego inicio una solicitud. Después de cinco solicitudes al servidor tomcat, habrá una solicitud del servidor nginx.

upstream myServer{
    
    
        server 10.0.2.15:8082 weight=10;  # IP 换成自己的
        server 10.0.2.15:8012 weight=2;  # IP 换成自己的
        #server 10.0.2.15:8011;
}
server {
    
    
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
    
    
        proxy_pass http://myServer;
        #root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}
ip_hash

La realización de ip_hash, luego de agregar ip_hash en la primera línea del upstream, la ip quedará bloqueada, y cada ip solo solicitará un servidor. En este momento reinicio el servidor y luego de realizar la solicitud, encontraré que solo el Se puede acceder al servidor nginx.

upstream myServer{
    
    
        ip_hash;
        server 10.0.2.15:8082 weight=10;  # IP 换成自己的
        server 10.0.2.15:8012 weight=2;  # IP 换成自己的
        #server 10.0.2.15:8011;
}
server {
    
    
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
    
    
        proxy_pass http://myServer;
        #root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

Separación dinámica y estática

Fórmula de concurrencia de Nginx:
worker_processes * worker_connections / 4 | 2 = capacidad de concurrencia final de Nginx
Requisito de recursos dinámicos / 4, requisito de recursos estáticos / 2
Nginx mejora la capacidad de concurrencia de Nginx a través de la separación dinámica y estática, y responde a los usuarios más rápido

Agente de recursos dinámicos

Nada que decir, básicamente era dinámico antes.

#配置如下
location / {
    
    
  proxy_pass 路径;
}
Agente de recursos estáticos
# nginx 配置项
server {
    
    
    listen       80;
    listen  [::]:80;
    server_name  localhost;

	# 在 /web/data 下创建html文件夹,然后把一个index.html文件放到里边
    location /html {
    
    
        root  /web/data;
        index  index.html;
    }

	#  在 /web/data 下创建img文件夹,然后把一个123.html文件放到里边
    location /img {
    
    
        root /web/data;
        autoindex on;   #代表展示静态资源的全部内容,以列表的形式展开
    }
}
<!- index.html文件内容, 直接把图片也直接放到了内容中一起请求,看是否可以直接成功 -> 
<h1>test img</h1>
<img src="http://192.168.1.113:8013/img/123.jpg"/>

Todo tuvo éxito, se puede acceder a la página estática html normalmente, y también se puede acceder a las imágenes normalmente

Inserte la descripción de la imagen aquí
Estamos analizando la función del "índice automático activado", de la siguiente manera
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_15915293/article/details/107945000
Recomendado
Clasificación