gpt4 book ai didi

html - 如何使用自定义位置或路径代替 root 用于使用 nginx 的多个应用程序?

转载 作者:搜寻专家 更新时间:2023-10-31 23:37:20 25 4
gpt4 key购买 nike

问题

我有一个网站,无需任何修改即可在根域(如 mydomain.com)上正常运行。但是,如果我想将其作为 mydomain.com/app1 提供,我需要修改后端的源代码和 html 中的静态链接(css、图像等)

  • Node :
    • app.get('/')app.get('/app1')
  • html
    • src="main.css"src="app1/main.css"

问题

当我想使用 nginx 分配域/路径时,我是否应该始终修改应用程序?

示例应用

https://github.com/jrichardsz/nodejs-static-pages/blob/master/server.js

app.get('/', function(req, res) {
// ejs render automatically looks in the views folder
res.render('index');
});

用于根域的 Nginx

这是我的 nginx 配置,适用于 mydomain.com

server {
listen 80;
server_name mydomain.com;

location / {
proxy_pass http://localhost:8080/;
}
}

尝试 mydomain.com/app1

server {
listen 80;
server_name mydomain.com;

location /app1/ {
proxy_pass http://localhost:8080/app1/;
}
}

这是 Node js 应用程序中的修复

app.get('/app1', function(req, res) {
// ejs render automatically looks in the views folder
res.render('index');
});

我试过了:

https://github.com/expressjs/express-namespace

http://expressjs.com/en/4x/api.html

但在这两种情况下,我都需要更改我的 Node js 应用程序。

提前致谢。

最佳答案

Should you always modify the application when you want to assign a domain/path?

不,您根本不需要修改应用程序。

当您以这种方式使用proxy_pass 时,您需要用正则表达式重写URL。尝试这样的事情:

  location ~ ^/app1/(.*)$ { 
proxy_pass http://localhost:8080/$1$is_args$args;
}

另请参阅:https://serverfault.com/q/562756/52951

关于html - 如何使用自定义位置或路径代替 root 用于使用 nginx 的多个应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40985784/

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