proxy_pass inverso con cache proxy nginx

proxy - inverso - Sirviendo dos sitios desde un servidor con Nginx



proxy con nginx (3)

Tengo una aplicación de Rails en funcionamiento en mi servidor y ahora me gustaría agregar otra.

Quiero que Nginx compruebe para qué es la solicitud y divida el tráfico en función del nombre de dominio.

Ambos sitios tienen su propio nginx.conf enlazado a sitios habilitados, pero me sale un error al iniciar nginx. Starting nginx: nginx: [emerg] duplicate listen options for 0.0.0.0:80 in /etc/nginx/sites-enabled/bubbles:6

Ambos están escuchando en 80 pero por cosas diferentes.

Sitio # 1

upstream blog_unicorn { server unix:/tmp/unicorn.blog.sock fail_timeout=0; } server { listen 80 default deferred; server_name walrus.com www.walrus.com; root /home/deployer/apps/blog/current/public; location ^~ /assets/ { gzip_static on; expires max; add_header Cache-Control public; } try_files $uri/index.html $uri @blog_unicorn; location @blog_unicorn { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://blog_unicorn; } error_page 500 502 503 504 /500.html; client_max_body_size 4G; keepalive_timeout 10; }

Sitio dos:

upstream bubbles_unicorn { server unix:/tmp/unicorn.bubbles.sock fail_timeout=0; } server { listen 80 default deferred; server_name bubbles.com www.bubbles.com; root /home/deployer/apps/bubbles/current/public; location ^~ /assets/ { gzip_static on; expires max; add_header Cache-Control public; } try_files $uri/index.html $uri @bubbles_unicorn; location @bubbles_unicorn { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://bubbles_unicorn; } error_page 500 502 503 504 /500.html; client_max_body_size 4G; keepalive_timeout 10; }


Simplemente haga default_server este mismo problema, pero la directiva duplicada de default_server no fue la única causa de este mensaje.

Solo puede usar el parámetro backlog en una de las directivas server_name .

Ejemplo

sitio 1:

server { listen 80 default_server backlog=2048; server_name www.example.com; location / { proxy_pass http://www_server; }

sitio 2:

server { listen 80; ## NOT NOT DUPLICATE THESE SETTINGS ''default_server backlog=2048;'' server_name blogs.example.com; location / { proxy_pass http://blog_server; }


Yo estaba teniendo el mismo problema. Lo arreglé modificando mi /etc/nginx/sites-available/example2.com archivo. Cambié el bloque de servidor a

server { listen 443 ssl; # modified: was listen 80; listen [::]:443; #modified: was listen [::]:80; . . . }

Y en /etc/nginx/sites-available/example1.com comenté listen 80 y listen [::]:80 porque el bloque del servidor ya había sido configurado para 443.


La documentación dice:

El parámetro default_server, si está presente, hará que el servidor se convierta en el servidor predeterminado para la dirección especificada: par de puertos.

También es obvio, solo puede haber un servidor predeterminado .

Y también dice:

Una directiva de escucha puede tener varios parámetros adicionales específicos para las llamadas al sistema relacionadas con el socket. Se pueden especificar en cualquier directiva de escucha, pero solo una vez para la dirección dada: par de puertos.

Por lo tanto, debe eliminar default valores default y deferred de una de las directivas de listen 80 . Y lo mismo se aplica a la directiva ipv6only=on también.