
Ich habe eine Nginx-Konfiguration, die 307-Weiterleitungen von http zu https durchführt. Es gibt vorhandene Client-Anwendungen, die eine Verbindung zu http herstellen und Daten über POST-Anfragen senden. Die Clients sind .Net-Dienste, die HttpWebRequest verwenden. Die bloße Verwendung einer 301-Weiterleitung führt dazu, dass die POST-Daten aus der Anfrage gelöscht werden.
In meiner lokalen Testumgebung funktioniert die 307-Weiterleitung, bei der Bereitstellung auf dem Produktionsserver wird die Weiterleitungsnachricht jedoch beschädigt und die Clients lösen eine Ausnahme aus.
Dies ist die funktionierende Antwort, die ich in meiner Testumgebung erhalte:
Und das bekomme ich aus der Produktionsumgebung
Sie können sehen, wie das Paket anders aussieht. Was könnte die Ursache für die unterschiedlichen Antworten sein? Die ältere Version von Nginx?
Antwort1
Versionen von nginx vor 1.1.16 unterstützten die Rückgabe von 307-Antworten nicht richtig.
Im Änderungsprotokoll heißt es im entsprechenden Teil:
Changes with nginx 1.1.16 29 Feb 2012
*) Feature: the "return" and "error_page" directives can now be used to
return 307 redirections.
Ich empfehle Ihnen, Ihren Produktionsserver (und Ihren Entwicklungsserver!) mitzubringenauf dem Laufendenwenn Sie diese Funktionalität benötigen. Nginx 1.0.5 ist zu diesem Zeitpunkt sehr alt.