gpt4 book ai didi

Node.js 从 URL 中删除端口

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

我的服务器中有两个 Node.js 应用程序。他们正在列出端口 55555。这是目录结构。

/home/myuser
/.htaccess
/package.json
/server.js

/foo.com
/node_modules
/public
/index.html
/package.json
/server.js

/bar.com
/node_modules
/public
/index.html
/package.json
/server.js

/home/myuser/server.js 内容

'use strict';

// Module dependencies.
var express = require('express');
var vhost = require('vhost');

var port = process.env.PORT || 55555;

function createVirtualHost(domainName, nodeApp) {
return vhost(domainName, nodeApp);
}

//Create server
var app = express();

var fooApp = require('./foo.com/server.js').app;
var barApp = require('./bar.com/server.js').app;

//Create the virtual hosts
var fooHost = createVirtualHost("www.foo.com", fooApp);
var barHost = createVirtualHost("www.bar.com", barApp);

//Use the virtual hosts
app.use(fooHost);
app.use(barHost);

//Start server
app.listen( port, function() {
console.log( 'Express server listening on port %d in %s mode', port, app.settings.env );
});

/home/myuser/.htaccess 内容

RewriteEngine On
RewriteRule ^$ http://127.0.0.1:55555/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://127.0.0.1:55555/$1 [P,L]

当我尝试访问 www.foo.com 时,出现错误:

Cannot GET /foo.com/index.html.var

当我尝试访问 www.bar.com 时,出现错误:

Cannot GET /bar.com/index.html.var

但我可以使用 www.foo.com:55555www.bar.com:55555 等端口访问这两个网站

如何在不使用端口的情况下访问网站?

最佳答案

使用 Apache 作为应用程序的反向代理可以解决您的问题:

<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>

为此使用 mod_proxy 扩展。更多信息请参见 this digitalocean article .

关于Node.js 从 URL 中删除端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45835308/

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