2010-11-18 8 views
1

Ich versuche mit nginx die Standardauthentifizierung zu erzwingen, bevor ich den Zugriff auf die H2-Datenbank-Webkonsole erlaube. Diese Konsole auf https://localhost:8084nginx HttpProxyModule Konfigurationshilfe

In meinem nginx.conf läuft, ich habe:

location /h2 { 
    auth_basic "Restricted"; 
    auth_basic_user_file htpasswd; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header Host $host; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-Forwarded-Proto https; 
    proxy_pass https://localhost:8084/; 
} 

Was ich will es für/h2 zu H2 der Webserver Proxy-Anfragen zu tun ist. Diese Konfiguration funktioniert für die erste Anfrage, der H2-Server sendet jedoch sofort eine HTTP-Weiterleitung für "/login.jsp", die als "/login.jsp" und nicht "/h2/login.jsp" an meinen Browser gesendet wird. Dies bedeutet, dass die Anfrage fehlschlägt, wenn mein Browser die Seite anfordert, da nur URLs an der Position "/ h2" an den H2-Webserver weitergeleitet werden.

Wie kann ich "/ h2" an Weiterleitungen anhängen, die vom H2-Webserver zurückgegeben werden? Ich habe folgendes versucht:

proxy_redirect https://localhost:8084/ https://$host/h2; 

aber es hat nichts getan.

Antwort

1

Dies scheint ein Nginx-Konfigurationsproblem zu sein. Versuchen Sie location /h2/ (mit Schrägstrich) anstelle von location /h2 in der Nginx.conf. Und dann verbinden Sie mit http://localhost/h2/. Sie benötigen keine Reverse-Proxy-Konfiguration, da das H2 Console-Tool keine absoluten URLs verwendet (es wird auf "login.jsp" und nicht auf "/login.jsp" umgeleitet). Das Problem ist, dass http://localhost:/h2 ein 'Dateiname' ist, während http://localhost:/h2/ ein 'Verzeichnis' ist.