Ich führe also mehrere Webseiten auf meinem VPS aus und verwende die virtuellen Hosts von Apache, um sicherzustellen, dass alle Benutzer, die zu meiner Website geleitet werden, an die richtige Website gesendet werden. Leider habe ich nach dem Einrichten einer Jenkins-Instanz festgestellt, dass ich zu jeder dieser Domänen wechseln kann, die auf meine VPS unter verschiedenen vhosts verweisen und 8080 an sie anhängen, um zum Jenkins-Server zu gelangen. Ich möchte einen Weg finden, um dies zu verhindern und mir zu erlauben, nur über ip: port auf den Jenkins-Server zuzugreifen. Jede Hilfe wird sehr geschätzt!
Gibt es als zusätzliche Frage eine Möglichkeit, die Verbindungsversuche zu IP: 80 ebenfalls zu unterbinden? Vielen Dank.
linux
apache-http-server
jenkins
Xemrer
quelle
quelle
https://jenkin.example.com
bekommt Reverse Proxy zuhttps://example.com:8080
und stellen Sie eine Art Authentifizierung voran, oder erlauben Sie nur bestimmten IP-Adressen, in Apache darauf zuzugreifen.Antworten:
Der erste Schritt ist, wie in den Kommentaren erwähnt, die Sperrung des öffentlichen Zugangs zu
your_ip:8080
(Jenkins kann weiterhin intern auf diesem Port ausgeführt werden.) Wie Sie dies tun, hängt wahrscheinlich von Ihrem VPS ab (auch wenn Ihre iptables- oder Firewall-Schnittstelle ein guter Startpunkt ist).Der zweite Schritt besteht darin, den virtuellen Apache-Host als "Standard" -Port festzulegen
:XX
ein Reverse Proxy (mit dem Apache mod_proxy Modul) und legen Sie das Proxy-Ziel als (lokalen) Verweis auf Jenkins fest, das auf dem Port ausgeführt wird:8080
. Dieser Reverse-Proxy würde den Zugriff auf Jenkins ermöglichen, auch wenn er ansonsten öffentlich gesperrt wäre. Das dürfte Sie besonders interessieren offizielle Jenkins-Wiki-Hinweise zum Ausführen von Jenkins hinter Apache .Anmerkungen
Der Grund, warum Sie möchten, dass Ihr Reverse-Proxy der "Standard" -Host für einen bestimmten Port ist, ist, dass dieser "Standard" -Host bei Apache- und namensbasierten virtuellen Hosts (normalerweise der erste virtuelle Host mit Port)
:XX
) wird zurückgegeben, wenn eine IP angefordert wird.Der Port für Ihren Reverse-Proxy wird durch Ihren virtuellen Host-Eintrag definiert. Wenn jedoch Apache und Jenkins auf demselben Server ausgeführt werden, kann dieser Port nicht mit demjenigen identisch sein, auf dem Jenkins ausgeführt wird (z. B.
:8080
).Vergessen Sie nicht, das richtige hinzuzufügen
Listen
Richtlinie für Hafen:XX
in Ihrer Apache-Konfiguration.Wenn Sie Port verwenden
:443
(SSL), Ihr Zertifikat für diesen Port sollte Ihre IP als gültigen Namen enthalten. Andernfalls erhalten Sie wahrscheinlich Zertifikatswarnungen.Um klar zu sein, Port
:XX
ist nur ein Beispiel / Platzhalter und bedeutet, dass Sie einen beliebigen Port auswählen.Habe nur Apache
Listen
an anderen Häfen als:80
. Dies wird jedoch alle normalen Ports beschädigen:80
HTTP-Zugriff auf Ihre Websites (d. H. Wenn ein Benutzer nicht explizit eingibt)https://
in ihrem Browser oder besuchen Sie mit einem explizitenhttps://
Link, sie können keine Verbindung herstellen).Als Kompromiss können Sie dieselbe Technik wie oben anwenden (mit einem "Standard" -Host am Port)
:80
), um Anfragen an Ihre Hauptwebsite oder an eine andere Stelle (z.https://www.google.com
).quelle