因为搜索引擎优化,我设置了一个工作正常的反向代理:
设置如下:
1) http://www.example.com(在heroku托管的node.js)
2) http://blog.example.com(wordpress在godaddy举办)
3)访问http://www.example.com/blog的访问者从http://blog.example.com获取内容。
这很好用,1)我也有代理使用流行的nodejitsu htt-proxy和httpProxyRules模块:
// Set up proxy rules instance
var proxyRules = new httpProxyRules({
rules: {
'.*/blog': 'https://blog.example.com', // Rule (1)
},
default: 'https://www.example.com' // default target
});
// Create reverse proxy instance
var proxy = httpProxy.createProxy();
// Create http server that leverages reverse proxy instance
// and proxy rules to proxy requests to different targets
http.createServer(function(req, res) {
// a match method is exposed on the proxy rules instance
// to test a request to see if it matches against one of the specified rules
var target = proxyRules.match(req);
if (target) {
return proxy.web(req, res, {
target: target,
changeOrigin: true,
});
}
res.writeHead(500, { 'Content-Type': 'text/plain' });
res.end('The request url and path did not match any of the listed rules!');
}).listen(6010);
然后我尝试添加Cloudflare SSL证书,以便我可以使用https。我知道Cloudflare本身就是一个反向代理。总的来说,我的设置中有3个反向代理,1),2)(两者都使用Cloudflare的反向代理)和3)(我的自定义反向代理)。
另外,1)和2)都可以正常使用https。但是,3)破了。
对于3),我一直收到错误:
错误1000 - DNS指向禁止的IP
发生了什么,我该如何解决这个问题?
答案 0 :(得分:5)
因此,您将CloudFlare DNS指向区域文件中的另一个代理。因为CloudFlare也是反向代理,enabling a proxy on a record may create a cyclic loop。
为了解决这个问题,您的Node.js代理应该直接指向原始Web服务器,而不是通过CloudFlare返回。如果您不想更新脚本,则可以通过更新执行代理的Web服务器上的hosts文件,在服务器上添加直接路由到您的源。