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)来的。端口
任何有关这是否是一种劣质做法的见解也会受到欢迎。
我现在用一种更简单的方法来解决这个问题。事实证明,我使用我的
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服务器后面)不再需要知道它在哪个端口上,因为端口现在隐藏在反向代理之后。
为什么这个