在基于node.js的HTML项目上通过Nginx重定向

时间:2019-01-24 08:17:37

标签: html node.js nginx

这是一个基础项目,使用了一些基于jquery的东西,一些ajax调用和一些原生HTML东西。该应用程序正在通过node.js启动。

代码示例

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

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

app.use(express.static(__dirname + '/'))
app.use(express.static(__dirname + '/assets'))
app.use(express.static(__dirname + '/js'))
app.use(express.static(__dirname + '/node_modules'))


app.get('/', function(req, res,next) {  
    res.sendFile(__dirname + '/index.html');
});

var server = require('http').createServer(app);
console.log("Server running at port 7001");
server.listen(7001);

这在localhost:7001上绝对可以正常工作,而且我们没有任何问题。现在,我们正在尝试将其部署在测试实例上,并且开发人员可以在其中启用一些功能。因此,现在我们的网址将类似于http://instanceip/something

因此,如果现在这样做,http://instanceip:7001显然将无法工作,因为我们具有结尾URL。我将此添加到节点

的主服务器文件中的代码中
app.get('/something', function(req, res,next) {  
    res.sendFile(__dirname + '/index.html');
});

现在,http://instanceip/something重定向到index.html,但是没有加载所有资产,我尝试在index.html中添加something/assets,但这都无济于事,并且我得到了404安慰。

问题

  1. 为什么未找到错误出现,反向代理服务器端需要一些设置?

  2. 我们如何解决它,有什么想法吗?

1 个答案:

答案 0 :(得分:0)

好的做法是通过nginx提供所有静态内容。
因此,我们的想法是configure nginx在某个文件夹中搜索静态文件。
您应该与“ devops people”交谈,并要求将所有静态文件加载到服务器上的目录中,并将nginx配置为从那里加载文件。
因此,非常简化的nginx解决方案将是设置配置文件:

server {
   root /www/data;

   location ~ \.js$ {
      /path/on/server/to/directory
   }

}

然后在html中,简单地添加如下https:// domain.com/somefile.js这样的网址