使用节点http代理时,在WordPress URL中隐藏端口号



我正在使用节点模块节点http代理将特定的虚拟主机重定向到几个WordPress站点的Apache。我的节点"服务器"在端口80上侦听,并重定向到Apache正在侦听的SOME_OTHER_port。

它运行良好(当我根据用户的建议更改WordPress设置以考虑SOME_OTHER_PORT时)。但是端口号总是包含在WordPress网站上每个页面的URL中。有没有其他方法可以做到这一点,这样我就不必看到这些丑陋的端口号了?

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

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

// 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);

80端口是我所有流量的来源。端口8000是一个潜在的WordPress网站,位于Apache服务器后面。端口9000是一个潜在的节点应用程序,在其他地方侦听。

任何关于这是否是一种粗制滥造的方式的见解都将受到欢迎。

我现在已经用一种简单得多的方式实现了这一点。事实证明,我用hostsports阵列进行的自定义路由有些过头了。我不完全确定为什么会有不同,也不完全确定这是否是因为以下代码是反向代理,而不是正向代理,但我继续在nodehttp代理的GitHub页面上实现了其中一个示例,该页面使用了所需的结果:

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方法与我以前的方法不同仍然暗示着我。任何进一步的理解都是对这篇文章的欢迎。

最新更新