Expressで動作するようにnginxを設定する方法は?


12

proxy_passノードアプリにリクエストするようにnginxを設定しようとしています。:StackOverflowの上の質問には、多くのupvotes得/programming/5009324/node-js-nginx-and-nowと私はそこから設定を使用しています。

(ただし、質問はサーバー構成に関するものであるため、ServerFaultにあるはずです)

nginxの構成は次のとおりです。

server {
  listen 80;
  listen [::]:80;

  root /var/www/services.stefanow.net/public_html;
  index index.html index.htm;
  server_name services.stefanow.net;

  location / {
    try_files $uri $uri/ =404;
  }

  location /test-express {
    proxy_pass    http://127.0.0.1:3002;
  }    

  location /test-http {
    proxy_pass    http://127.0.0.1:3003;
  }
}

プレーンノードの使用:

var http = require('http');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(3003, '127.0.0.1');

console.log('Server running at http://127.0.0.1:3003/');

できます! チェック:http : //services.stefanow.net/test-http

エクスプレスを使用:

var express = require('express');
var app = express(); //

app.get('/', function(req, res) {
  res.redirect('/index.html');
});

app.get('/index.html', function(req, res) {
  res.send("blah blah index.html");
});

app.listen(3002, "127.0.0.1");
console.log('Server running at http://127.0.0.1:3002/');

動作しません:( 参照:http : //services.stefanow.net/test-express


私は何かが起こっていることを知っています。

a)test-expressが実行されていません ここに画像の説明を入力してください

b)text-expressが実行されている

ここに画像の説明を入力してください

(そして、サーバー上でsshを実行しているときにコマンドラインで実行されていることを確認できます)

root@stefanow:~# service nginx restart
 * Restarting nginx nginx                                                                                  [ OK ]

root@stefanow:~# curl localhost:3002
Moved Temporarily. Redirecting to /index.html

root@stefanow:~# curl localhost:3002/index.html
blah blah index.html

ここで説明されているようにヘッダーを設定しようとしました:http : //www.nginxtips.com/how-to-setup-nginx-as-proxy-for-nodejs/(まだ機能しません)

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;

また、「127.0.0.1」を「localhost」に、またはその逆に置き換えてみました


お知らせ下さい。明らかな詳細を見逃しているので、もっと詳しく知りたいと思います。ありがとうございました。


内のすべてのログnginx、エラーログ?
マセガロー14年

このセットアップでは、エクスプレスアプリケーションをどのように実行していますか?foreverまたはpm2それを実行する別のプロセスが必要nginxですか?それから単にプロキシになりますか?
文法

私は正確に思い出せません...私は受け入れられた答えが私のために働いたのを覚えています。
火星ロバートソン

回答:


21

パスを提供するように設定した/index.htmlが、必要/test-express/index.htmlです。提供するようにExpressを設定するか、プロキシされたリクエスト/test-express/index.htmlからストリップするようにnginxを作成し/test-exressます。後者は、アドオンがにスラッシュを末尾のような単純なようであるlocationproxy_pass

location /test-express/ {
  proxy_pass    http://127.0.0.1:3002/;
}

詳細については、http://nginx.org/r/proxy_passを参照してください。


2
Q:「私はかなり確信して、私はいくつかの明白なディテール欠場よ」A:「アドオン最後のスラッシュような単純な」(私は文字通り立ち往生した、ありがとう)
火星ロバートソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.