he estado siguiendoeste tutorialy todo parece funcionar bien, excepto mi configuración de nginx. Mi node.js
aplicación se ejecuta en el puerto 1337, el barniz se ejecuta en el puerto 80, el stunnel en el 443 y nginx en el 8080.
Puedo acceder a mi aplicación correctamente cuando especifico el puerto, https://example.com:1337
pero todo lo que obtengo cuando la visito https://example.com
es un 502 Bad Gateway
error.
Este es el resultado de mi registro nginx:
2012/08/25 14:13:59 [error] 6049#0: *1 no live upstreams while connecting to upstream, client: 127.0.0.1, server: example.com, request: "GET / HTTP/1.1", upstream: "http://app_example/", host: "example.com"
2012/08/25 14:14:02 [error] 6049#0: *1 upstream prematurely closed connection while reading response header from upstream, client: 127.0.0.1, server: example.com, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:1337/", host: "example.com"
y este es mi archivo de configuración nginx para ese dominio:
upstream example.com {
server 127.0.0.1:1337;
}
server {
server_name example.com;
listen 8080;
location / {
proxy_pass http://example.com;
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;
}
}
Estoy corriendo:
- ubuntu 12.04
- nginx/1.1.19
- túnel 4.42
- barniz-3.0.2
Respuesta1
Entonces, lo primero... ese enlace decía que solo están usando nginx para archivos estáticos y archivos html para el sitio web. Estás intentando hacer proxy de nodejs/websockets a través de nginx.
Entonces, ¿por qué ese sitio web dice que no hagamos eso? Principalmente porque los websockets no son compatibles con nginx en una versión estable.
Websockets tiene una especificación 1.1 y nginx tiene solo una especificación 1.0. Dicho esto... puedes compilar como tcp_proxy para nginx, pero simplemente proxy con barniz como se indica en esa URL. No tiene mucho sentido ir
barniz->nginx->nodo
solo haz
barniz -> nodo