2016-04-29 41 views
0

我在centos7(aws的ec2-instance)上安装了nginx + mysql + nodejs。 一个简单的节点应用程序工作正常。它可以通过卷曲和通过网络浏览器访问。但一个简单的快速应用程序不能通过webbrowser工作(响应502)。它只能通过卷曲http://MY-PRIVATE-IP:8080。 在我本地安装的服务器上,每个人都认为没问题。 注意:我没有安装express express。可能是米。错误?nginx上的Express.js应用程序

有什么想法?我会很感激你的想法。感谢名单。

这里是我的nginx的配置的详细信息节点的应用程序:

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: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

尝试将server_name指令更改为您用于访问您的应用程序的url,以便Nginx知道重定向您的请求的位置。

如果失败,请检查您的访问和错误日​​志,以获取有关在您的访问尝试期间执行的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)。您是否尝试过将proxy_pass指令指向端口8080,应用程序正在侦听? –

相关问题