Deaktivieren Sie https, wenn Nginx den Reverse-Proxy zur IP-Adresse verwendet

Deaktivieren Sie https, wenn Nginx den Reverse-Proxy zur IP-Adresse verwendet

Ich habe Nginx als Reverse-Proxy auf meinem Server für eine Site konfiguriert, beispielsweise example.com

Ich möchte, dass der Client über eine IP-Adresse auf meine Site zugreift, etwa wie folgthttp://192.0.2.67

Das Problem besteht darin, dass auf der Site example.com eine Umleitung vorhanden ist, die HTTP so einstellt, dass es auf HTTPS umleitet. (Dieses example.com verwendet Cloudflare)
Wenn der Client von dort auf meine Site zugreift, http://192.0.2.67wird er umgeleitet aufhttps://example.com

Wie deaktiviere ich die HTTP-Weiterleitung zu HTTPS auf meinem Nginx-Reverse-Proxy?

Mein Code sieht wie folgt aus:

server {
   listen 80;

   location / {
       proxy_pass http://example.com;
   }
}

Antwort1

Ich sehe die Umleitung im Code, den Sie in der Frage gepostet haben, nicht. Das bedeutet, dass die Umleitung auf der Seite example.com erfolgt.

Hängt davon ab, wie die Umleitung erfolgt. Falls die Umleitung einfach „http TCP/80 => https TCP/433“ erfolgt und keine weiteren Prüfungen durchgeführt werden, können Sie versuchen, direkt auf https umzuleiten:

server {
   listen 80;

   location / {
       proxy_pass https://example.com;
   }
}

Falls dies nicht hilft, befürchte ich, dass Sie nicht große Erfolgschancen haben, da Sie nicht der Knoten sind, der die Kraft für die https-Umleitung realisiert.

Falls die Seite einen HTTP Strict Transport Security (HSTS)-Header enthält, erfolgt die Umleitung auf Browserebene und auch dort besteht nur eine minimale Wahrscheinlichkeit, dass die IP übersprungen wird (theoretisch können Sie versuchen, diesen Header herauszufiltern).

Antwort2

Mir scheint, dass die Seite eine Weiterleitung vornimmt, nicht der Webserver. Über PHP kann das etwa so erreicht werden:

<?php header('Location: http://google.com') ?>

In diesem Fall ist es schwierig, ein derartiges Verhalten über den Webserver selbst zu unterbinden.

Antwort3

Nginx leitet hier nicht um. Es ist der Ursprungsserver, der diese HTTP-Umleitung sendet. Mit Nginx können Sie gesendete Umleitungen durch Ihr eigenes Umleitungsziel ersetzen:

server {
    listen 80;

    location / {
        proxy_pass http://example.com;
        # replace redirects
        proxy_redirect http://example.com http://192.0.2.67;
    }
}

Weitere Einzelheiten finden Sie unterDokumentation von ngx_http_proxy_module

verwandte Informationen