Soy muy novato en NGINX.
En mi proyecto, el server se define tanto en etc/nginx/nginx.conf como en etc/nginx/conf.d/proxy.conf . Y etc/nginx/conf.d/proxy.conf está incluido en nginx.conf
No entiendo la relación de la configuración del servidor en estos dos archivos. ex. En nginx.conf , la configuración del servidor es listen 80 ; listen [::]:80 ; y en proxy.conf, la configuración del servidor es listen 80 proxy_protocol .
Encuentre los archivos conf completos de la siguiente manera:
etc/nginx/conf.d/proxy.conf
content: | client_max_body_size 500M; server_names_hash_bucket_size 128; upstream backend { server unix:///var/run/puma/my_app.sock; } server { listen 80 proxy_protocol; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; large_client_header_buffers 8 32k; set_real_ip_from 10.0.0.0/8; real_ip_header proxy_protocol; location / { proxy_http_version 1.1; proxy_set_header X-Real-IP $proxy_protocol_addr; proxy_set_header X-Forwarded-For $proxy_protocol_addr; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_buffers 8 32k; proxy_buffer_size 64k; proxy_pass http://backend; proxy_redirect off; Enables WebSocket support location /v1/cable { proxy_pass http://backend; proxy_http_version 1.1; proxy_set_header Upgrade "websocket"; proxy_set_header Connection "Upgrade"; proxy_set_header X-Real-IP $proxy_protocol_addr; proxy_set_header X-Forwarded-For $proxy_protocol_addr; } } }etc/nginx/nginx.conf
user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; } http { 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; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; include /etc/nginx/conf.d/*.conf; server { listen 80 ; listen [::]:80 ; server_name localhost; root /usr/share/nginx/html; location / { } } }Nginx selecciona un bloque de server para procesar una solicitud en función de los valores de las directivas listen y server_name .
Si no se puede encontrar un nombre de servidor coincidente, se utilizará el servidor predeterminado para ese puerto.
En la configuración de su pregunta, el bloque del server en proxy.conf se encuentra primero, por lo que se convierte en el servidor predeterminado de facto para el puerto 80.
El bloque del server en nginx.conf solo coincidirá con las solicitudes que usen el nombre de host correcto, es decir, http://localhost
Vea este documento para más detalles.