Odd重定向到localhost而不是ip with node / express

时间:2013-12-06 13:15:15

标签: node.js nginx express

我尝试与nginx一起运行节点服务器。使用护照模块,我遵循本地身份验证策略。我的问题是所有像'/ login'这样的快速重定向都会导致'localhost:3000 / login'而不是'http://:3000 / login'。

这是一个示例函数:

exports.ensureAuthenticated = function(req, res, next) {
  if (req.isAuthenticated()) { return next(); }
  res.redirect('/login');
}

当服务器是远程ip plus端口时,即使res.redirect(服务器+'/ login')也没有区别。

这是我的nginx配置(/ etc / nginx / sites-available / default)

upstream node_app {
    server **<ip>**:3000;
}

server {

  listen 8080;
  server_name **<ip>**;

  root /home/nls/www2;
  access_log /var/log/nginx/foo.access.log;
  error_page 404 /404.html;

  location /remote_data/ {

    # Proxy request to node:

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

    proxy_pass http://node_app;
    proxy_redirect off;

    access_log /var/log/nginx/foo_nodeapp.access.log;

  }

  location / {
    try_files $uri $uri/index.html 404;
  }

}

服务器代码不包含对localhost重定向的引用。在客户端也是重定向实现没有这样的重定向。

编辑:这会造成麻烦的溃败:

app.post('/login', passport.authenticate('local', { failureRedirect: 'http://<ip>:3000/login', failureFlash: true }), function(req, res) { res.redirect('http://**<ip>**:3000/vi-lab'); });

0 个答案:

没有答案