Nginx w / Express&永远 - 无法获得/

时间:2014-02-24 21:36:05

标签: node.js nginx express digital-ocean

我看了question,但没有任何帮助。我正在尝试将localhost:3000配置为代理端口80.这是我的nginx配置(位于sites-enabledsites-available):

server {
    listen 0.0.0.0:80;
    server_name fit-forms;
    access_log /var/log/nginx/fit-forms.log;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header HOST $http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_pass http://localhost:3000;
        proxy_redirect off;
    }
}

当我访问IP时,我得到Cannot GET /(这是在DigitalOean上)。没有静态文件出现。这是我的快递代码:

var express = require('express'),
  livereload = require('connect-livereload'),
  config = require('./config'),
  app = express(),
  env = app.get('env'),
  port = process.env.PORT || config.serverPort || 3000;

if (env === 'development') {
  app.use(livereload());
  app.use(express.logger('dev'));
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
}

app.use(express.compress());
app.use(express.urlencoded());
app.use(express.json());

app.use(express.static(__dirname + '/public'));

app.listen(port);
console.log('Express server (' + env + ') running on port ' + port);

我假设我的nginx配置缺乏..

1 个答案:

答案 0 :(得分:1)

我有同样的情况。

键是这个值:

__dirname + '/public'

试着输出它,例如

res.send(__dirname + '/public')

你可能会看到问题的根源。

在我的情况下,nodejs app的类别和public_html目录在同一级别上,而nodejs脚本无法找到它。

所以我改变了这个方式:

__dirname + '/../public'