Ich habe eine www.example.com
IP X.X.Y.Y
und möchte den Datenverkehr von Port 80 an die Domäne (www.example.com) weiterleiten. Ich habe die folgende Iptable verwendet:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination X.X.Y.Y:80
aber ich bekomme kein gutes Ergebnis, weil X.X.Y.Y
der Inhalt nicht mit der Domäne übereinstimmt (www.example.com).
Beispiel: Wenn Sie 198.252.206.16
mit Ihrem Browser zu (der IP von Serverfault) gehen, sehen Sie, dass Ergebnis und Inhalt der Adresse (IP-Adresse) nicht übereinstimmen www.serverfault.com
.
Ich möchte die Domäne in der obigen iptables-Regel verwenden, zum Beispiel: --to-destination www.example.com
(es ist nur ein Beispiel und ich weiß, dass es nicht funktioniert), wie kann ich das machen?
Gibt es eine alternative Möglichkeit, dies zu tun, ohne iptables zu verwenden?
Danke
Antwort1
Ich denke, was Sie brauchen, ist ein HTTP-Proxy, der die Anforderungsheader neu schreibt. IPTables analysiert den HTTP-Header nicht und ersetzt die darin enthaltenen Domänen nicht.
Sie sollten sich hierfür etwas wie Nginx oder Squid ansehen, einfach etwas, das die HTTP-Anforderungsheader versteht und in die gewünschte Domäne umschreibt.
IPTables kennt keine höheren Protokolle als TCP oder UDP.
Antwort2
iptables
Dies ist auch bei Verwendung dieser Option nicht möglich, -d
da die Domänennamen beim Start von iptables geladen werden. Die richtige Vorgehensweise für Ihr Anliegen ist die Verwendung eines Proxyservers wie Squid.
Antwort3
Führen Sie auf Ihrem Webserver Folgendes aus:
NameVirtualHost *:80
<VirtualHost *:80>
# The DNS1 site is hosted locally
ServerName DNS1
DocumentRoot /var/www./...
</VirtualHost>
<VirtualHost *:80>
ServerName DNS2
# Forward all requests to container:
Proxypass / http://<container-ip>
ProxypassReverse / http://<container-ip>
</VirtualHost>