关于apache:使用node-http-proxy时隐藏WordPress URL中的端口号

Hiding port number in WordPress URL when using node-http-proxy

我正在使用节点模块node http proxy为几个wordpress站点将特定的虚拟主机重定向到apache。我的节点"server"监听端口80,并重定向到Apache正在监听的其他端口。

它工作得很好(当我根据用户的建议更改WordPress设置以解释某些其他端口时)。但是,在WordPress网站的每一个页面的URL中总是包含端口号。有没有其他方法可以做到我不必看到这些丑陋的端口号?

我无法想象如果我的设置没有很大的改变,这是可能的,但我认为这是值得问的。

以下是我在节点中用于代理的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// Module dependancies
var httpProxy = require('http-proxy'),
express = require('express')(),
connect = require('connect');

// Http proxy-server
httpProxy.createServer(function (req, res, proxy) {

    // Host Names and Ports
    var hosts = [
        'www.some-website.co.uk'
    ];

    // Ports

    var ports = [

        8000

    ];

    var host = req.headers.host;
    var port = hosts.indexOf(host) > -1 ? ports[hosts.indexOf(host)] : 9000;

    // Now proxy the request
    proxy.proxyRequest(req, res, {
        host: host,
        port: port
    });
})
.listen(80);

我所有的交通都是从埃多克斯港(0)来的。端口8000是一个潜在的wordpress站点,位于Apache服务器后面。端口9000是一个潜在的节点应用程序,在别处监听。

任何有关这是否是一种劣质做法的见解也会受到欢迎。


我现在用一种更简单的方法来解决这个问题。事实证明,我使用我的hostsports阵列的自定义路由是多余的。我不完全确定这会有什么不同,是否是因为下面的代码是反向代理,而不是正向代理,但是我继续并在节点HTTP代理的Github页面上实现了一个示例,该页面使用了所需的结果:

1
2
3
4
5
6
7
8
9
10
11
var options = {
  hostnameOnly: true,
  router: {
    'www.some-apache-website.co.uk': '127.0.0.1:9000',
    'www.some-node-website.co.uk': '127.0.0.1:8000'
  }
};

var proxyServer = httpProxy.createServer(options);

proxyServer.listen(80);

这可以有效地(使用更少的代码)反向代理基于主机名的站点。结果是,我的WordPress站点(位于Apache服务器后面)不再需要知道它在哪个端口上,因为端口现在隐藏在反向代理之后。

为什么这个node-http-proxy方法不同于我以前的方法,仍然暗指我。任何进一步的理解都是对这篇文章的欢迎补充。