Wie behandelt man die "OPTIONS *" Anfrage in nginx?

8

In meiner Umgebung verwende ich perlbal, um die Anfrage an nginx umzuleiten. Wenn verify_backend aktiviert ist. Perbal sendet eine "OPTIONS *" - Anfrage an nginx, aber die Nginx-Antwort ist eine schlechte Anfrage.

Nach RFC2616 :

  

Wenn der Anforderungs-URI ein Sternchen ("") ist, ist die OPTIONS-Anforderung eher für den? Server als für eine bestimmte Ressource gedacht. Da die Kommunikationsoptionen eines Servers normalerweise von der Ressource abhängen, ist die Anfrage "" nur als "ping" - oder "no-op" -Methode nützlich. Es ermöglicht dem Client nicht, die Fähigkeiten des Servers zu testen. Zum Beispiel kann dies verwendet werden, um einen Proxy auf HTTP / 1.1-Konformität (oder deren Fehlen) zu testen.

Ich denke, dass Perlbal versucht, diese Art von Anfrage zu senden, aber nginx kann das standardmäßig nicht verarbeiten.

Wenn ich versuche, eine Anfrage "OPTIONS * HTTP / 1.0" zu senden, bekomme ich immer "HTTP 400 bad request":

  

127.0.0.1 - - [18 / Feb / 2013: 03: 55: 47 +0000] "OPTIONS * HTTP / 1.0" 400 172 "-" "-" "-"

aber es funktioniert auf "OPTIONS / HTTP / 1.0" -Option ohne Sternchen Anfragen:

  

127.0.0.1 - - [18 / Feb / 2013: 04: 03: 56 +0000] "OPTIONS / HTTP / 1.0" 200 0 "-" "-" "-"

Wie kann ich nginx so konfigurieren, dass es mit http return 200 anstatt mit HTTP return 400 antwortet?

    
Cody 18.02.2013, 04:09
quelle

1 Antwort

8

Ich weiß, es ist ein Overkill, aber eine Lösung besteht darin, HAProxy davor zu setzen, um nur diese OPTIONS-Anfrage zu erfassen und dann Ihre eigene Antwort in HAProxy zu erstellen:

%Vor%     
jesal 26.02.2013 20:19
quelle