2010-11-18 3 views
1

J'essaie d'utiliser nginx pour appliquer une authentification de base avant de permettre l'accès à la console Web de la base de données H2. Cette console est en cours d'exécution sur https://localhost:8084nginx Aide à la configuration HttpProxyModule

Dans mon nginx.conf, j'ai:

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/; 
} 

Ce que je veux faire est des demandes proxy pour/h2 au serveur Web de H2. Cette configuration fonctionne pour la première requête, mais le serveur H2 envoie immédiatement une redirection HTTP pour "/login.jsp" qui est envoyée à mon navigateur sous la forme "/login.jsp" et non "/h2/login.jsp". Cela signifie que lorsque mon navigateur demande la page, la requête échoue car seules les URL à l'emplacement "/ h2" sont transmises au serveur Web H2. Comment puis-je ajouter "/ h2" à toute redirection renvoyée par le serveur Web H2? J'ai essayé ce qui suit:

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

mais il n'a rien fait.

Répondre

1

Cela semble être un problème de configuration nginx. Essayez location /h2/ (avec barre oblique) au lieu de location /h2 dans le fichier nginx.conf. Et puis connectez-vous à http://localhost/h2/. Vous n'avez besoin d'aucune config reverse-proxy, car l'outil H2 Console n'utilise pas d'URL absolues (il redirige vers "login.jsp" et non "/login.jsp"). Le problème est que http://localhost:/h2 est un 'nom de fichier', alors que http://localhost:/h2/ est un 'répertoire'.

Questions connexes