问题
如果我有一些节点js应用程序,如果我想将其发布为mydomain.com/app1,mydomain.com/app2等,我必须更改 app.get' /' 到 app.get(' / app1' 以及某些情况下的css,js和图片路径。
问题
如果要分配域名/路径,是否应始终修改应用程序?
有没有办法让应用程序独立?
是nodejs还是nginx配置?
这是一个节点js应用程序,例如:
https://github.com/jrichardsz/responsive_web1.1/blob/master/server.js
这是我的节点js app的nginx配置 mydomain.com (有效!)
server {
listen 80;
server_name mydomain.com;
location / {
proxy_pass http://localhost:8080/;
}
}
节点应用:
app.get('/', function(req, res) {
// ejs render automatically looks in the views folder
res.render('index');
});
这是我对同一节点js app的nginx配置,但是 mydomain.com/app1 (有效!)
server {
listen 80;
server_name mydomain.com;
location /app1/ {
proxy_pass http://localhost:8080/app1/;
}
}
这是节点js app中的修复
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
但在这两种情况下,我都需要更改我的节点js app。
提前致谢。
答案 0 :(得分:4)
如果要分配域/路径,是否应始终修改应用程序?
不,你根本不必修改应用程序。
以这种方式使用proxy_pass
时,需要使用正则表达式重写URL。尝试这样的事情:
location ~ ^/app1/(.*)$ {
proxy_pass http://localhost:8080/$1$is_args$args;
}