2016-07-08 36 views
2

wegen SEO Ich habe Setup einen Reverse-Proxy, der gut funktioniert:Cloudflare + Reverse Proxy - Fehler 1000

Das Setup ist wie folgt:

1)http://www.example.com (node.js bei Heroku gehostet)

2)http://blog.example.com (Word bei godaddy hosted)

3) v Besucher, die auf http://www.example.com/blog zugreifen, erhalten Inhalt von http://blog.example.com.

Dies funktioniert gut, und bei 1) Ich habe auch den Proxy mit dem beliebten Arbeits nodejitsu htt-Proxy und httpProxyRules Module:

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

Dann habe ich versucht Cloudflare SSL-Zertifikate hinzugefügt, so konnte ich https habe. Ich weiß, dass Cloudflare selbst als Reverse-Proxy fungiert. Insgesamt hätte ich 3 Reverse-Proxies in meinem Setup, 1), 2) (beide mit Cloudflares Reverse-Proxy) und 3) (mein eigener Reverse-Proxy).

Getrennt, beide 1) und 2) funktionierte gut mit https. Allerdings 3) brach.

Für 3) Ich erhalte die Fehlermeldung:

Fehler 1000 - DNS Punkte verboten IP

Was los ist und wie muss ich vorgehen, dieses Problem zu lösen?

Antwort

3

Sie verweisen also Ihr CloudFlare-DNS auf einen anderen Proxy in Ihrer Zonendatei. Da CloudFlare auch ein Reverse-Proxy ist, geben Sie enabling a proxy on a record may create a cyclic loop ein.

Um dies zu beheben, sollte Ihr Node.js-Proxy idealerweise direkt auf den ursprünglichen Webserver zeigen und nicht durch CloudFlare zurückgehen. Wenn Sie Ihr Skript nicht aktualisieren möchten, können Sie auf dem Server möglicherweise direkte Routen zu Ihrem Ursprung hinzufügen, indem Sie die Hosts-Datei auf dem Webserver aktualisieren, indem Sie die Proxyfunktion ausführen.

+0

Hi mjsa, über "Ihr Node.js Proxy sollte idealerweise direkt zum ursprünglichen Webserver zeigen und nicht durch CloudFlare zurückgehen." Könntest du genauer sagen, wie ich das tun soll, indem ich das reverse-proxy-Skript node.js ändere? – user1347271

+0

Gehen Sie voran und ändern Sie die Datei/etc/hosts auf dem Server, der das Skript hostet, sodass diese Domänen direkt auf den Ursprungsserver zeigen. Andernfalls könnten Sie IP-Adressen für den Ursprungsserver anstelle des Domänennamens in Ihrem Skript verwenden. – mjsa