简体   繁体   English

Node.js从URL删除端口

[英]Node.js Remove the port from the URL

I have two Node.js apps in my server. 我的服务器中有两个Node.js应用程序。 They are listing to port 55555 . 他们正在列出端口55555 Here is the directory structure. 这是目录结构。

/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 content /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 content /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]

When I trying to access www.foo.com , I am getting error as: 当我尝试访问www.foo.com时,出现以下错误:

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

When I trying to access www.bar.com , I am getting error as: 当我尝试访问www.bar.com时,出现以下错误:

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

But I can access both sites using port like www.foo.com:55555 and www.bar.com:55555 但是我可以使用www.foo.com:55555www.bar.com:55555等端口访问这两个站点

How could I access sites without using port? 如何在不使用端口的情况下访问站点?

Using Apache as reverse proxy for your app can solve your problem: 使用Apache作为应用程序的反向代理可以解决您的问题:

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

Use mod_proxy extension for this. 为此,请使用mod_proxy扩展名。 More information is provided in this digitalocean article . 此数字海洋文章中提供了更多信息。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM