使用节点时隐藏WordPress URL中的端口号

我正在使用节点模块node-http-proxy将特定的虚拟主机重定向到Apache的几个WordPress站点。 我的节点“服务器”侦听端口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港口是我所有的交通来源。 Port 8000是一个潜在的WordPress站点,位于Apache服务器后面。 端口9000是一个潜在的节点应用程序在别处听。

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


我现在已经以更简单的方式实现了这个工作。 事实证明,我的hostsports阵列的自定义路由是矫枉过正的。 我不完全相信为什么这会有所作为,以及是否因为下面的代码是反向代理而不是正向代理,但是我继续并在node-http-proxy的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方法与我之前的方法不同,仍然暗示着我。 任何进一步的理解将是这个职位的一个受欢迎的补充。

链接地址: http://www.djcxy.com/p/96423.html

上一篇: Hiding port number in WordPress URL when using node

下一篇: Why use nginx as websocket proxy?