我想设置一个基本的代理,例如一个浏览器同步,例如我想转到web1.domain1.xyz,它应该代理到web1.domain.xyz(所以它是any.domain1 .xyz to anything.domain.xyz)
我已经完成了这部分工作:
// HTTP Proxy
var simpleHttp = require("http");
var simpleHttpProxy = require("http-proxy");
var simpleProxy = simpleHttpProxy.createServer();
simpleHttp.createServer(function(req,res){
var target = 'http://'+req.headers.host.replace(/domain1.xyz|domain2.xyz|domain3.xyz/gi,'domain.xyz');
simpleProxy.web(req, res, {
rewriteRules: true,
xfwd: true,
toProxy: true,
changeOrigin: true,
hostRewrite: true,
autoRewrite: true,
protocolRewrite: true,
target: target
});
}).listen(4000);
我还希望能够指出多个域名,例如domain1.com domain2.com domain3.com。
然而,它并没有取代链接,我不知道浏览器同步如何做到这一点,我一直在研究https://github.com/BrowserSync/browser-sync/blob/master/lib/server/proxy-server.js和https://github.com/BrowserSync/browser-sync/blob/master/lib/server/proxy-utils.js
我看到他们使用自定义函数来替换链接,但是我没有成功实现他们的逻辑。
答案 0 :(得分:0)
我不确定如何使用http-proxy
执行您要求的操作,但我几乎可以肯定可以使用express-vhost完成此操作。 README中甚至还有一个合适的例子。我总是发现express-vhost
非常轻巧和实用。
var connect = require('connect')
var serveStatic = require('serve-static')
var vhost = require('vhost')
var mailapp = connect()
// add middlewares to mailapp for mail.example.com
// create app to serve static files on subdomain
var staticapp = connect()
staticapp.use(serveStatic('public'))
// create main app
var app = connect()
// add vhost routing to main app for mail
app.use(vhost('mail.example.com', mailapp))
// route static assets for "assets-*" subdomain to get
// around max host connections limit on browsers
app.use(vhost('assets-*.example.com', staticapp))
// add middlewares and main usage to app
app.listen(3000)
答案 1 :(得分:0)
编辑:我认为你有一个有效的例子。没有正确理解这个问题: - /进一步阅读:
您可以链接替换电话
{{> molecules-card(title: 'Title', content: '<div>Long and nasty string of html</div>' ) }}
如果您想代理不同的服务器,您可以创建字典并替换为该值
// HTTP Proxy
var simpleHttp = require("http");
var simpleHttpProxy = require("http-proxy");
var simpleProxy = simpleHttpProxy.createServer();
var domains = ['domain1.xyz','domain2.xyz','domain3.xyz'];
simpleHttp.createServer(function(req,res){
// Calling replace for every entry in domains
var domain = req.headers.host;
for (var i in domains) {
domain = domain.replace('/'+domains[i]+'/gi','domain.xyz');
}
var target = 'http://'+domain;
simpleProxy.web(req, res, {
rewriteRules: true,
xfwd: true,
toProxy: true,
changeOrigin: true,
hostRewrite: true,
autoRewrite: true,
protocolRewrite: true,
target: target
});
}).listen(4000);
编辑: 替换您真正需要的链接替换链接。浏览器同步使用Regex解析内容中的链接,并用简单的string.replace替换链接。这里看的功能是(https://github.com/BrowserSync/browser-sync/search?utf8=%E2%9C%93&q=rewriteLinks)