【问题标题】:Node.js Remove the port from the URLNode.js 从 URL 中删除端口
【发布时间】:2018-01-31 18:47:59
【问题描述】:

我的服务器中有两个 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 时,出现以下错误:

无法获取 /foo.com/index.html.var

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

无法获取 /bar.com/index.html.var

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

不使用端口如何访问网站?

【问题讨论】:

  • 您的系统上是否已使用端口 80?如果您没有运行节点,系统是否仅使用 foo.com 响应任何内容?
  • @SPlatten 我无法使用端口 80,因为我使用的是托管主机帐户。
  • 那么如果不使用不同的端口就无法访问 URL,您已经回答了自己的问题。
  • @Alex 如果我删除了.htaccess,当我尝试访问www.foo.com 时,我会收到You don't have permission to access / on this server.
  • htaccess 是运行 Apache 的 Web 服务器的配置文件。 Node 运行自己的服务器。它们是两个不同的东西

标签: node.js apache .htaccess vhosts express-vhost


【解决方案1】:

使用 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 提供更多信息。

【讨论】:

    猜你喜欢
    • 2012-03-20
    • 2012-01-24
    • 2014-07-18
    • 2011-07-04
    • 2016-04-14
    • 2015-08-17
    • 1970-01-01
    • 2020-02-20
    相关资源
    最近更新 更多