0. Introducción
Para aumentar la eficiencia de Odoo se va a colocar un servidor web como Nginx para descargar el caché, comprimir y servir ficheros estáticos. Para ello se instalará Nginx y se configurará com "reverse proxy".
NOTA: Esto permite que Nginx pase las peticiones a varios servidores, repartiendo la carga y permitiendo escalar la infraestructura
1. Parar el servicio de apache2 en nuestro ubuntu
Hay que tener en cuenta que el servicio apache2 de nuestra máquina ubuntu suele estar en marcha y ocupa el puerto 80, cosa que puede impedir que funcione nuestro servicio nginx. para pararlo y ver el estado de dicho servicio:
#1. Parar el servicio
sudo systemctl stop apache2
#2. Ver el estado del servicio
sudo systemctl status apache2
Vamos a un navegador y teclemaos http://localhost:80 y no tendria que aparecer nada
#1. Parar el servicio
sudo systemctl stop apache2
#2. Ver el estado del servicio
sudo systemctl status apache2
Vamos a un navegador y teclemaos http://localhost:80 y no tendria que aparecer nada
2. Conseguir los certificados
En este caso disponemos de un certificado en formato pkcs#12 (extension ".p12"). Parece ser que Nginx prefiere tener el certificado en ficheros, uno con extensión ".crt" y otro, la clave , con extensión ".key".
Para convertir de format pkcs#12 al último formato ejecutamos:
#1. Extract certificate in crt format
openssl pkcs12 -in ./MyCert.p12 -clcerts -nokeys -out wildcard2023Nginx.crt
#2. Extract key in rsa format
openssl pkcs12 -in ./MyCert.p12 -nocerts -nodes -out wildcard2023Nginx.rsa
En este caso, el nombre se debe a que es un certificado wildcard que valida cualquier ordenador con el dominio "poblacion.es", como por ejemplo "odoo.poblacion.es" . En el proceso anterior nos pide la contraseña, por tanto ya tenemos este par de certificado y clave:
- wildcard2023Nginx.crt y
- wildcard2023Nginx.rsa
3. Crear la estructura de carpetas
4. Guardar los certificados en la carpeta nginx/certs
-A PARTIR DE AQUÍ TODO FALLA ----
Opción 1: fijar las direcciones IP
Para aumentar la eficiencia de Odoo se va a colocar un servidor web como Nginx para descargar el caché, comprimir y servir ficheros estáticos. Para ello se instalará Nginx y se configurará com "reverse proxy".
NOTA: Esto permite que Nginx pase las peticiones a varios servidores, repartiendo la carga y permitiendo escalar la infraestructura
Crear el fichero de configuración nginx/odoo-nginx.conf
Que tendrá este contenido. OJO las direciones estáticas IP que se marcan con fondo amarillo de explica su cálculo en el punto 7
#***********************************************************************# 1. upstream: Definimos los servidores sobre los que se hará el PROXY#***********************************************************************upstream odoo16 {server 172.21.0.3:8069; # Obtenido del fichero prova02_default.json que se ve en NETWORKS->prova02_default ->Inspect}# de momento no hacemos el chat#upstream odoochat {# server 127.0.0.1:8072;# }#***********************************************************************# 2.1 server: Definimos el comportamiento para el https (p.443)#***********************************************************************server {# 2.1.1 puertolisten 443 ssl;# 2.1.2 certificados obtenidos en el punto 2ssl_certificate /etc/nginx/certs/wildcard2023Nginx.crt;ssl_certificate_key /etc/nginx/certs/wildcard2023Nginx.rsa;# 2.1.3 nombre del servidor (Utilizamos VS Code y analizamos la redserver_name 172.21.0.4; # Obtenido del fichero prova02_default.json que se ve en NETWORKS->prova02_default ->Inspect# También se puede obtener en una shell del nginx y ejecutando hostname -I# 2.1.4 donde se guardan los logsaccess_log /var/log/nginx/odoo.access.log;error_log /var/log/nginx/odoo.error.log;# 2.1.5 otros parámetrosproxy_buffers 16 64k;proxy_buffer_size 128k;# 2.1.5 Solamente se escogerá este location para verificar que nginx funcionalocation / {root /usr/share/nginx/html;index index.html index.htm;}#error_page 404 /404.html;# redirect server error pages to the static page /50x.html#error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}# 2.1.6 Aquí es donde realmente redirigimos al odoo# El contenido de este location debería ir al "location /" pero como sabemos# que odoo redirige automáticamente a /web, podemos tener este location# pero repito, que lo normal es meter este contenido en "location /"location /web {proxy_pass http://odoo16; # odoo16 se definió en "upstream"proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;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;proxy_set_header X-Forwarded-Proto https;}# de momento no hacemos el chat#location /longpolling {#proxy_pass http://odoochat;#}
# Este location es el que pone por omisión, y a veces va y otras veces no# Es mucho mejor cambiarlo a location ~* /static/# location ~* /web/static/ {# 2.1.7 Para los recursos: ver# Cualquier recurso que se encuentre en una carpeta intermedia que# se llame "static" se recogerá del servidor odoo16.# Normalmente es para recoger los js y los dibujoslocation ~* /static/ {proxy_cache_valid 200 60m;proxy_buffering on;expires 864000;proxy_pass http://odoo16;}}#***********************************************************************# 2.2 server: Definimos el comportamiento para el http (p.82)#***********************************************************************#Create a new server block to rewrite http to httpsserver {listen 80;listen [::]:80;server_name 172.21.0.4;#Add the rewrite directive as belowreturn 301 https://$host$request_uri;}
Donde:
- Se escucha peticiones https del puerto 443 (2.1 apartado server) y se redirigen las peticiones del puerto 80 al 443 (2.2 apartado server)
- Se le indica la ruta del certificado y clave
- Se le indican las rtutas donde guardar los logs dde accesos y de errores
- Se define en "location" el comportamiento del proxy y donde descargar los recursos tales como js, imágenes etc
-Crear el fichero docker-compose.yml en la carpeta del post anterior
Que tendrá este contenido y sustituirá al anterior docker-compose.yml y tendrá contenido único
version: '3.3'services:odoo:container_name: odoo16_02image: odoo:16.0env_file: odoo16_pg13.env # environment filedepends_on:- postgresqlports:- "7069:8069" #port mapping(custom-port:8069)volumes:- ./odoo-data:/var/lib/odoo- ./odoo-conf:/etc/odoo- ./odoo-adds:/odoo/extra-addons #SAME AS odoo.conf addons_path#--Edu (1)networks:default:#ipv4_adress: 172.21.0.4#Fi--Edu (1)postgresql:container_name: postgres_odoo_02image: postgres:13env_file: odoo16_pg13.env # environment filevolumes:- ./postgresql-data:/var/lib/postgresql/data/pgdata ##SAME AS odoo16_pg13.env PGDAT [4]networks:default:nginx:container_name: nginx_odoo_02image: nginx:latestdepends_on:- odooports:- "7080:80"- "7443:443"#1. Copiar la CARPETA de certificados a la carpeta ./nginx-certs#2. Copiar el FICHERO de configuración del proxy nginx.conf a la carpeta ./nginx-etc/nginx/conf.dvolumes:- ./nginx-certs:/etc/nginx/certs# - ./nginx-log:/var/log# - ./nginx-conf/odoo-nginx.conf:/etc/nginx/conf.d/odoo-nginx.conf- ./nginx-conf/odoo-nginx.conf:/etc/nginx/conf.d/default.conf#--Edu (1)networks:default:networks:default:ipam:config:- subnet: 172.21.0.0/16
Se definen los puertos a utilizar y los mapeos (volumenes docker) del servidor físico y el enlace al servidor virtual dockerizado.
7. ¿Como se definen la direcciones IP?
En el fichero docker-compose.yml ,al final en el punto networks.defalut.ipam.config.subnet tiene este valor:
172.21.0.0/16
De ahí como hemos indicado que hay unos servicios que dependen de otros (por ejemplo odoo depende de postgresql y nginx depende de odoo) entonces se repartirán las direcciones de los servicios en este orden postgresql, odoo y nginx. Pero el primero que se da és al gateway. por tanto las direcciones son:
- 172.21.0.1 gateway
- 172.21.0.2 postgresql
- 172.21.0.3 odoo
- 172.21.0.4 nginx
-Ejecución
Ejecutamos "docker-compose" en la carpeta donde esta el "docker-compose.yml" (carpeta nginx)
docker-compose up
Y podemos utilizar en el navegador de la máquina local:
- http:/localhost:7080/ sale la pantalla de bienvenida de nginx
- https:/localhost:7443/ sale la pantalla de bienvenida de nginx
- http://localhost:/7080/web falla
- https://localhost:/7443/web sale la pantalla de odoo a traves de nginx
- http://localhost:7069/ sale la pantalla de odoo directamente
- http://172.21.0.3:8069/ sale la pantalla de odoo directamente
- https://172.21.0.4:7443/ sale la pantall de bienvenida de nginx
- https://172.21.0.4:7443/web sale la pantall de bienvenida de nginx
Opción 2: Sin fijar las direcciones IP
-Crear el fichero de configuración nginx/odoo-nginx.conf
Que tendrá este contenido. OJO los nombres del host se obtienen del partado aliases: que hay en el apartado network de cada servicio en el fichero docker-compose.yml.
OJO: El debug se hace en las líneas de fondo azul y se muestran las variables
La línea de fondo amarillo soluciona alguna de las redirecciones a http (y las redirecciona a https)
#***********************************************************************# 1. upstream: Definimos los servidores sobre los que se hará el PROXY#***********************************************************************upstream odoo16 {server odoo_host:8069; # Obtenido del fichero docker-compose.yml apartado odoo.networks.odoo_network.aliases}#upstream nginx16 {# server nginx_host:443; # Obtenido del fichero docker-compose.yml apartado odoo.networks.odoo_network.aliases#}# de momento no hacemos el chat#upstream odoochat {# server 127.0.0.1:8072;# }#***********************************************************************# 2.1 server: Definimos el comportamiento para el https (p.443)#***********************************************************************server {# 2.1.1 puertolisten 443 ssl;# 2.1.2 certificados obtenidos en el punto 2ssl_certificate /etc/nginx/certs/wildcard2023Nginx.crt;ssl_certificate_key /etc/nginx/certs/wildcard2023Nginx.rsa;# 2.1.3 nombre del servidor (Utilizamos VS Code y analizamos la redserver_name nginx_host; # Obtenido del fichero docker-compose.yml apartado nginx.networks.odoo_network.aliases# 2.1.4 donde se guardan los logsaccess_log /var/log/nginx/odoo.access.log;error_log /var/log/nginx/odoo.error.log;# 2.1.5 otros parámetrosproxy_buffers 16 64k;proxy_buffer_size 128k;# 2.1.5 Solamente se escogerá este location para verificar que nginx funciona#location / {# root /usr/share/nginx/html;# index index.html index.htm;#}#error_page 404 /404.html;# redirect server error pages to the static page /50x.html#error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}# 2.1.6 Aquí es donde realmente redirigimos al odoo# El contenido de este location debería ir al "location /" pero como sabemos# que odoo redirige automáticamente a /web, podemos tener este location# pero repito, que lo normal es meter este contenido en "location /"location / {#location /web {proxy_pass http://odoo16; # odoo16 se definió en "upstream"proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;#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;#proxy_set_header X-Forwarded-Proto https;proxy_cache_bypass $http_upgrade;#proxy_set_header Upgrade $http_upgrade;#proxy_set_header Connection "upgrade";proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Forwarded-Host $host;add_header X-debug-message "1. Passing to odoo16 host=$host ,remote_addr=$remote_addr ,proxy_add_x_forwarded_for=$proxy_add_x_forwarded_for ,scheme=$scheme server_port=$server_port ,http_upgrade=$http_upgrade ,request_uri=$request_uri" always;#proxy_set_header X-Forwarded-Port $server_port;}# de momento no hacemos el chat#location /longpolling {#proxy_pass http://odoochat;#}# Este location es el que pone por omisión, y a veces va y otras veces no# Es mucho mejor cambiarlo a location ~* /static/#location ~* /web/static/ {# 2.1.7 Para los recursos: ver# Cualquier recurso que se encuentre en una carpeta intermedia que# se llame "static" se recogerá del servidor odoo16.# Normalmente es para recoger los js y los dibujoslocation ~* /static/ {proxy_cache_valid 200 60m;proxy_buffering on;expires 864000;proxy_pass http://odoo16;}}#***********************************************************************# 2.2 server: Definimos el comportamiento para el http (p.82)#***********************************************************************#Create a new server block to rewrite http to httpsserver {listen 80;#listen [::]:80;server_name nginx_host;#Add the rewrite directive as belowadd_header X-debug-message "2. Passing to odoo16 host=$host ,remote_addr=$remote_addr ,proxy_add_x_forwarded_for=$proxy_add_x_forwarded_for ,scheme=$scheme server_port=$server_port ,http_upgrade=$http_upgrade ,request_uri=$request_uri" always;return 301 https://nginx_host$request_uri;}server {listen 80;#listen [::]:80;#server_name nginx_host;server_name localhost;#1.Va pero no passa a http#proxy_redirect http://localhost/web http://odoo16;#2.???? Si va!!!!return 301 https://localhost:7443$request_uri;#Add the rewrite directive as below#return 301 https://$host$request_uri;#proxy_pass http://odoo16;#return 301 https://odoo_host:8069$request_uri;location / {#location /web {proxy_pass http://odoo16; # odoo16 se definió en "upstream"proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;#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;#proxy_set_header X-Forwarded-Proto https;#proxy_cache_bypass $http_upgrade;#proxy_set_header Upgrade $http_upgrade;#proxy_set_header Connection "upgrade";#proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto https;proxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-Port $server_port;add_header X-debug-message "3. Passing to odoo16 host=$host ,remote_addr=$remote_addr ,proxy_add_x_forwarded_for=$proxy_add_x_forwarded_for ,scheme=$scheme server_port=$server_port ,http_upgrade=$http_upgrade ,request_uri=$request_uri" always;}}
#***********************************************************************# 1. upstream: Definimos los servidores sobre los que se hará el PROXY#***********************************************************************upstream odoo16 {server odoo_host:8069; # Obtenido del fichero docker-compose.yml apartado odoo.networks.odoo_network.aliases}# de momento no hacemos el chat#upstream odoochat {# server 127.0.0.1:8072;# }#***********************************************************************# 2.1 server: Definimos el comportamiento para el https (p.443)#***********************************************************************server {# 2.1.1 puertolisten 443 ssl;# 2.1.2 certificados obtenidos en el punto 2ssl_certificate /etc/nginx/certs/wildcard2023Nginx.crt;ssl_certificate_key /etc/nginx/certs/wildcard2023Nginx.rsa;# 2.1.3 nombre del servidor (Utilizamos VS Code y analizamos la redserver_name nginx_host; # Obtenido del fichero docker-compose.yml apartado nginx.networks.odoo_network.aliases# 2.1.4 donde se guardan los logsaccess_log /var/log/nginx/odoo.access.log;error_log /var/log/nginx/odoo.error.log;# 2.1.5 otros parámetrosproxy_buffers 16 64k;proxy_buffer_size 128k;# 2.1.5 Solamente se escogerá este location para verificar que nginx funcionalocation / {root /usr/share/nginx/html;index index.html index.htm;}#error_page 404 /404.html;# redirect server error pages to the static page /50x.html#error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}# 2.1.6 Aquí es donde realmente redirigimos al odoo# El contenido de este location debería ir al "location /" pero como sabemos# que odoo redirige automáticamente a /web, podemos tener este location# pero repito, que lo normal es meter este contenido en "location /"location /web {proxy_pass http://odoo16; # odoo16 se definió en "upstream"proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;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;proxy_set_header X-Forwarded-Proto https;}# de momento no hacemos el chat#location /longpolling {#proxy_pass http://odoochat;#}
# Este location es el que pone por omisión, y a veces va y otras veces no# Es mucho mejor cambiarlo a location ~* /static/# location ~* /web/static/ {# 2.1.7 Para los recursos: ver# Cualquier recurso que se encuentre en una carpeta intermedia que# se llame "static" se recogerá del servidor odoo16.# Normalmente es para recoger los js y los dibujoslocation ~* /static/ {proxy_cache_valid 200 60m;proxy_buffering on;expires 864000;proxy_pass http://odoo16;}}#***********************************************************************# 2.2 server: Definimos el comportamiento para el http (p.82)#***********************************************************************#Create a new server block to rewrite http to httpsserver {listen 80;listen [::]:80;server_name nginx_host;#Add the rewrite directive as belowreturn 301 https://$host$request_uri;}
Donde:
- Se escucha peticiones https del puerto 443 (2.1 apartado server) y se redirigen las peticiones del puerto 80 al 443 (2.2 apartado server)
- Se le indica la ruta del certificado y clave
- Se le indican las rutas donde guardar los logs de accesos y de errores
- Se define en "location" el comportamiento del proxy y donde descargar los recursos tales como js, imágenes etc
-Crear el fichero docker-compose.yml en la carpeta del post anterior
Que tendrá este contenido y sustituirá al anterior docker-compose.yml y tendrá contenido único
version: '3.3'services:odoo:container_name: odoo16_02image: odoo:16.0env_file: odoo16_pg13.env # environment filedepends_on:- postgresqlports:- "7069:8069" #port mapping(custom-port:8069)volumes:- ./odoo-data:/var/lib/odoo- ./odoo-conf:/etc/odoo- ./odoo-adds:/odoo/extra-addons #SAME AS odoo.conf addons_pathnetworks:odoo_network:aliases:- odoo_hostpostgresql:container_name: postgres_odoo_02image: postgres:13env_file: odoo16_pg13.env # environment filevolumes:- ./postgresql-data:/var/lib/postgresql/data/pgdata ##SAME AS odoo16_pg13.env PGDAT [4]networks:odoo_network:aliases:- postgres_hostnginx:container_name: nginx_odoo_02image: nginx:latestdepends_on:- odooports:- "7080:80"- "7443:443"#1. Copiar la CARPETA de certificados a la carpeta ./nginx-certs#2. Copiar el FICHERO de configuración del proxy nginx.conf a la carpeta ./nginx-etc/nginx/conf.dvolumes:- ./nginx-certs:/etc/nginx/certs# - ./nginx-log:/var/log# - ./nginx-conf/odoo-nginx.conf:/etc/nginx/conf.d/odoo-nginx.conf- ./nginx-conf/odoo-nginx.conf:/etc/nginx/conf.d/default.conf#--Edu (1)networks:odoo_network:aliases:- nginx_host# En este caso, tambien damos nombres a los volúmnes compartidosvolumes:odoo-data: {}odoo-conf: {}odoo-adds: {}postgresql-data: {}nginx-certs: {}networks:odoo_network:# driver: bridge EN VERSIONES ANTERIORES DE DOCKER FUNCIONABA.# Ahora hay que comentar esta opción pues sale el error:# "ERROR: plugin "bridge;" not found"
Se definen los puertos a utilizar y los mapeos (volumenes docker) del servidor físico y el enlace al servidor virtual dockerizado.
7. ¿Como se pueden ver las direcciones IP?
En VS vamos al símbolo de docker - NETWORKS y en nuestra red apretamos el botón derecho del mouse y seleccionamos inspect
Y nos muestra un fichero de configuración json donde se puede ver las direcciones IP4
{
"Name": "prova04_odoo_network",
"Id": "79a4585b674d1e8d80a17073e91663206b8702a48c914800e022b152d2b9c013",
"Created": "2024-01-03T14:39:30.696893035+01:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.21.0.0/16",
"Gateway": "172.21.0.1"
}
]
},
"Internal": false,
"Attachable": true,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"242451e0c89495d64305e186429508b79781aa939b714ebaceb9dbfdee2f38fd": {
"Name": "odoo16_02",
"EndpointID": "c47c3ff3e7d5e4269976963b47ecbb19ccd675ada631fd253344f37d6040c8ac",
"MacAddress": "02:42:ac:15:00:03",
"IPv4Address": "172.21.0.3/16",
"IPv6Address": ""
},
"5b727c3e15b40f7f5e6ae0f2a0b33f8e192a27757fd6e38dbd4cd74dcb3fd2ad": {
"Name": "postgres_odoo_02",
"EndpointID": "dda9bd062a5c735592d3d9f04786497bedf714528a0776d7dd38cc7192277c6a",
"MacAddress": "02:42:ac:15:00:02",
"IPv4Address": "172.21.0.2/16",
"IPv6Address": ""
},
"627344b0d41cc470d1c98a224ff02992d7bdd7ff38525acee4f2083c21ea9e73": {
"Name": "nginx_odoo_02",
"EndpointID": "ce2fad2cc3a0d12a89de56186cf82f742c099f02c3c4f7c2bed7dbadfc589c5f",
"MacAddress": "02:42:ac:15:00:04",
"IPv4Address": "172.21.0.4/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {
"com.docker.compose.network": "odoo_network",
"com.docker.compose.project": "prova04",
"com.docker.compose.version": "1.29.2"
}
}
8. Ejecución
Ejecutamos "docker-compose" en la carpeta donde esta el "docker-compose.yml" (carpeta nginx)
docker-compose up
Y podemos utilizar en el navegador de la máquina local:
- http:/localhost:7080/ redirecciona a https://localhost:7443/web/database/selector
- https:/localhost:7443/ redirecciona a https://localhost:7443/web/database/selector
- http://localhost:7080/web falla porque cambia de http a https sin cambiar el puerto
- https://localhost:7443/web redirecciona a https://localhost:7443/web/database/selector
- http://localhost:7069/ sale la pantalla de odoo http://localhost:7069/web/database/selector
9. Parámetros nginx
1. X-Forwarded-Proto: valor siendo valor (http o https), se usa para definir el protocolo. Ejemplo de uso:
proxy_set_header X-Forwarded-Proto https;
2. X-Forwarded-For: <client>, <proxy1>, <proxy2> se utiliza para pasar la IP del cliente y si se quiere las Ips de los proxys por donde pasa, separadas por comas. Si se utiliza un proxy, en el ejemplo de abajo se pasa la dirección del proxy ($host)
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
3. X-Real-IP <ip> Para indicar el nombre de dominio del servidor (para hosts virtuales) y el puerto. Ejemplo
proxy_set_header X-Real-IP $remote_addr;
4. Host: <host>:<port> Para indicar el nombre de dominio del servidor (para hosts virtuales) y el puerto. Ejemplo
proxy_set_header Host $host;
4. Upgrade: <host>:<port> Para indicar el nombre de dominio del servidor (para hosts virtuales) y el puerto. Ejemplo
10. Variables nginx
1. $host : Contiene en este orden de precedencia:
- nombre del host de la line de la request.
- nombre del host del campo "Host" de la cabecera de la request.
- nombre del servidor que coincide con una request.
2. $http_host: Contiene el valor del campo "Host" de una cabecera http de una request
3. $server_name: Nombre del servidor virtual que procesó la request. Si "server" contiene múltiples nombres, solo se considerará el primero.
4. $http_upgrade: Tiene el valor del Header "Upgrade" que se utiliza para poder utilizar web sockets que mantienen la conexión abierta mucho tiempo
No hay comentarios :
Publicar un comentario