nginx: node.js varnish 및 stunnel을 사용하는 동안 502 잘못된 게이트웨이

nginx: node.js varnish 및 stunnel을 사용하는 동안 502 잘못된 게이트웨이

나는 팔로우해왔다이 튜토리얼, nginx 설정을 제외하고 모든 것이 정상적으로 실행되는 것 같습니다. 내 node.js응용 프로그램은 포트 1337에서 실행되고, varnish는 포트 80에서 실행되고, stunnel은 443에서, nginx는 8080에서 실행됩니다.

포트를 지정하면 내 앱에 올바르게 연결할 수 있지만 https://example.com:1337방문할 때 얻는 것은 모두 오류 https://example.com입니다 502 Bad Gateway.

이것은 내 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"

이것은 해당 도메인에 대한 내 nginx 구성 파일입니다.

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;
    }
}

나는 뛰고있어:

  • 우분투 12.04
  • nginx/1.1.19
  • 충격 4.42
  • 바니시-3.0.2

답변1

먼저, 해당 링크에 따르면 정적 파일에는 nginx만 사용하고 웹 사이트에는 html 파일만 사용하고 있습니다. nginx를 통해 nodejs/websocket을 프록시하려고 합니다.

그러면 왜 그 웹사이트에서는 그렇게 하지 말라고 하는 걸까요? 주로 안정적인 릴리스의 nginx에서는 웹 소켓이 지원되지 않기 때문입니다.

웹소켓은 1.1 사양이고 nginx는 1.0 사양입니다. 이제 .. nginx에 대해 tcp_proxy와 같이 컴파일할 수 있지만 URL이 지적한 것처럼 광택제로 프록시할 수 있습니다. 가는 건 별로 의미가 없지

광택제->nginx->노드

그냥 해

바니시 -> 노드

관련 정보