2016-04-29 8 views
0

Ich habe nginx + mysql + nodejs auf Centos7 (ec2-Instanz von aws) installiert. Eine einfache Knoten App funktioniert gut. Es kann sowohl über curl als auch über den Webbrowser aufgerufen werden. Eine einfache Express-App funktioniert jedoch nicht über den Webbrowser (Antwort 502). Es funktioniert nur über curl http://MY-PRIVATE-IP:8080. Auf meinem lokal installierten Server ist alles in Ordnung. Hinweis: Ich habe Express Global nicht installiert. Vielleicht ist das m. Fehler?Express.js App auf Nginx

Irgendeine Idee? Ich würde Ihre Ideen schätzen. Danke.

hier Details über meine nginx Konfiguration eine der Knoten-Anwendungen:

nginx.conf

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

NodeJS App: 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/'); 

Express.js App : Hallo.js

Antwort

0

Versuchen Sie, die Anweisung server_name in die URL zu ändern, die Sie für den Zugriff auf Ihre App verwenden, damit Nginx weiß, wohin Sie Ihre Anfrage weiterleiten müssen.

Wenn dies fehlschlägt, überprüfen Sie Ihre Zugriffs- und Fehlerprotokolle, um weitere Details zu Nginx-Vorgängen zu erhalten, die während Ihres Zugriffs durchgeführt werden.

+0

Nach dem Ändern der Server-Name 52.38.xx.xx leider der Zugriff schlägt fehl mit diesem Protokoll: 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

Servername sollte Ihre URL sein, nicht die IP des Servers (außer Sie verwenden die IP beim Versuch, auf Ihre Website zuzugreifen, was nicht empfohlen wird). Haben Sie versucht, die proxy_pass-Anweisung an den Port 8080 zu leiten, wo die App zuhört? –