2016-04-29 9 views
0

Ichはcentos7(awsのec2-instance)にnginx + mysql + nodejsをインストールしました。 単純なノードアプリケーションが正常に動作します。カールとWebブラウザの両方からアクセスできます。しかし、簡単なエクスプレスアプリはWebブラウザ(レスポンス502)で動作しません。それはカールhttp://MY-PRIVATE-IP:8080を介してのみ動作します。 私のローカルにインストールされたサーバーでは、すべての考えがうまくいきます。 注:express globalはインストールしていません。それはmです。間違い?nginxのExpress.jsアプリ

私はあなたのアイデアに感謝します。 〜ここ

は私のnginxの構成ノードのアプリについての詳細は次のとおりです。

user nginx; worker_processes 2; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; #worker_rlimit_nofile 30000; events { worker_connections 1024; } http { index index.php index.htm index.html; include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; keepalive_timeout 65; types_hash_max_size 2048; gzip on; #include /etc/nginx/conf.d/*.conf; upstream node_upstream { server MY-PRIVATE-IP:8080; } server_tokens off; server { listen 80; listen [::]:80; server_name _; root /var/www/html; # Load configuration files for the default server block. #include /etc/nginx/default.d/*.conf; location /myapp { proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_pass http://node_upstream; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } } 

nginx.conf nodejsアプリ:hallo.js

var http = require('http'); 

http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hallo Welt\n'); 
}).listen(8080, 'MY-PRIVATE-IP'); 

console.log('Server running at http://MY-PRIVATE-IP:8080/'); 

expressjsアプリ:hello.js

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

app.get('/', function (req, res) { 
    res.send('Hello World!'); 
}); 

app.listen(8080, function() { 
    console.log('Example app listening on port 8080!'); 
}); 

答えて

0

Nginxがリクエストをリダイレクトする場所を知るように、アプリケーションにアクセスするために使用しているURLにserver_nameディレクティブを変更してみてください。

これが失敗した場合は、お使いのアクセス試行中に実行されているnginxの操作の詳細については、アクセスログとエラーログを確認してください。

+0

残念ながら、server_name 52.38.xx.xxを変更すると、このログでアクセスが失敗します。 79.248.x.xx - [30/Apr/2016:20:15:57 +0000] "GET/myapp HTTP/1.1 "404 19 " - " の "Mozilla/5.0(Windows NTの6.1; WOW64; RV:45.0)のGecko/20100101 Firefoxの/ 45.0" " - " を使用している場合を除き – Asman

+0

サーバー名は、あなたのURLではなく、サーバーのIP(する必要がありますあなたのウェブサイトにアクセスしようとしているときはipですが、これはお勧めしません)。あなたは、アプリケーションがリッスンしているポート8080にproxy_pass命令を指示しようとしましたか? –