私はフォローしていますこのチュートリアル、そして 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
まず、そのリンクには、Web サイトの静的ファイルと HTML ファイルにのみ nginx を使用していると書かれています。nginx 経由で nodejs/websockets をプロキシしようとしています。
では、なぜその Web サイトではそうしないように言われているのでしょうか? 主な理由は、安定したリリースの nginx では Websocket がサポートされていないためです。
Websocketsは1.1仕様で、nginxは1.0仕様です。そうは言っても、nginxのtcp_proxyのようにコンパイルすることはできますが、そのURLで指摘されているようにvarnishでプロキシするだけです。
ヴァーニッシュ->nginx->ノード
ただやる
ワニス -> ノード