Ich versuche , Nginx zu erhalten eingehende Anfragen an eine Stelle neu zu schreiben , mein Server mit dem Präfix https://
zu http://
(dies ist , weil ein CMS auf dieser Website verwendet zwingt URIs anstelle von relativen Pfaden - im Wesentlichen die gesamte Website zu brechen durch Bilder, Skripte zu machen, und Stylesheets nicht verfügbar).
Ich versuche derzeit, eine vorhandene Direktive eines Vorgängers nachzurüsten, aber meine Kenntnisse der Nginx-Konfigurationssyntax schränken mich ein. Hier ist der Code:
if ($ssl_protocol = "") {
rewrite ^ https://$http_host$request_uri? permanent;
}
Ich habe diesen Code derzeit auskommentiert, um ein erzwungenes Überschreiben von http://
to zu verhindern https://
, aber ich kann den Vorgang nicht rückgängig machen, ohne die Site zu beschädigen. Folgendes habe ich bisher versucht:
if ($ssl_protocol = "https") {
rewrite ^ http://$http_host$request_uri? permanent;
}
und
# also tried ($ssl_protocol != "")
if (!($ssl_protocol = "")) {
rewrite ^ http://$http_host$request_uri? permanent;
}
Der erste scheint keine Wirkung zu haben. Der an den Client gesendete HTML-Code sendet weiterhin HTTPS-Anforderungen, die nicht neu geschrieben werden.
Das zweite Snippet scheint ebenfalls keine Wirkung zu haben - wenn ich es richtig verstehe (obwohl ich immer noch etwas überrascht bin), unterstützt Nginx keine boolesche Negation.
Was wäre der beste (oder funktionierende) Weg, um dies zu tun?
BEARBEITEN: Ich habe versucht, den Code aus der Antwort von @ NathanC hinzuzufügen. Dieses bedingungslose Umschreiben führt jedoch zu einer Umleitungsschleife. Hilfe wird immer noch geschätzt.
ERR_INSECURE_RESPONSE
Ereignis, wenn die Ressourcen angefordert,https
aber zurückgegeben werdenhttp
, aber das sollte eine relativ einfache Lösung sein.