gpt4 book ai didi

node.js - 具有一个域名的多个node.js项目,每个项目都使用路径 '/'作为基本url。 Nginx 和 Express.js

转载 作者:太空宇宙 更新时间:2023-11-04 00:36:05 24 4
gpt4 key购买 nike

我成功地将多个 node.js 项目反向代理到不同的端口,如下面设置的 Nginx 中所示。然而,我想要完成的任务是,当 url 到达 Node.js 服务器时将其视为根。

例如,当有人访问 mydomain.com/projects/music_player 时,是否可以让 Express 应用程序将请求 URL 查看为“/”而不是“/projects/music_player”。

我当前的 Nginx 设置和 Express 配置示例如下。

Nginx:

server {
listen 80;

server_name mydomain_name.com;

location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}

location /projects/music_player/ {
proxy_pass http://localhost:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

我想这样做:

app.get("/", function (req, res) {
res.sendFile("index.html");
});

app.listen(8000);

而不是这个:

app.get("/projects/music_player", function (req, res) {
res.sendFile("index.html");
});

app.listen(8000);

我不确定这是否可能。原因是我希望我的每个 Node node.js/express 应用程序都可以作为独立应用程序部署,而无需重组代码。我试图避免每个项目都有一堆域名,而且我认为这会很酷。

最佳答案

是的!当然可以。

我认为最好的方法是将整个程序重写为一个 Express 应用程序,但你说你想避免这种情况。

然后我认为当前设置的捷径是让每个程序监听不同的端口,然后在 nginx 中将路由映射到它们。

例如:

dog.js

app.get("/", function (req, res) {
res.sendFile("dog.html");
});

app.listen(8001);

cat.js

app.get("/", function (req, res) {
res.sendFile("cat.html");
});

app.listen(8002);

最后在你的 nginx 配置文件中:

server {
listen 80;

server_name mydomain_name.com;

location / {
proxy_pass http://localhost:8001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}

location /cat/ {
rewrite /cat/ / break;
proxy_pass http://localhost:8002;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

请注意重写指令,这可以防止将 /cat/ 位置发送到仅需要 / 路由的 cat.js 应用。

关于node.js - 具有一个域名的多个node.js项目,每个项目都使用路径 '/'作为基本url。 Nginx 和 Express.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38965142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com