web-dev-qa-db-fra.com

Webmin: impossible de se connecter via le proxy inverse nginx

J'ai créé un proxy inverse pour Webmin via nginx afin d'exécuter Webmin à [domaine du site]/webmin au lieu du port 10000 ([domaine du site]: 10000).

Lorsque je vais sur [domaine du site]/webmin, la page de connexion s'affiche comme prévu - mais lorsque j'essaie de me connecter, la page de connexion se recharge simplement (pas de message d'erreur, pas de succès). La page de connexion contient tous les éléments (images, js, etc.) correctement chargés.

En regardant /var/webmin/miniserv.log, je vois:
105.23.149.76 - - [26/Jul/2015:14:07:13 -0400] "POST //session_login.cgi HTTP/1.0" 401 2892

Notez le statut d'erreur 401 (non autorisé).

Avant de configurer le proxy inverse, les connexions réussies ressemblaient à ceci:
145.23.98.124 - - [26/Jul/2015:13:34:38 -0400] "GET /admin/config/session_login.cgi HTTP/1.1" 401 2840 145.23.98.124 - root [26/Jul/2015:13:34:44 -0400] "POST /session_login.cgi HTTP/1.1" 200 871

Mon journal d'authentification système ne reçoit pas de ping des tentatives de connexion. Webmin ne passe donc même pas l'appel de connexion via PEM (il est arrêté avant cela).

Quelqu'un sait-il ce qui pourrait expliquer cette erreur 401 dans mon journal ou, d'une manière plus générale, ce qui empêcherait la connexion Webmin de fonctionner?

Merci beaucoup!


nginx config:

server {
        listen 443 ssl;
        server_name site.example.com;
        ssl on;

        ssl_certificate [ssl cert].crt;
        ssl_certificate_key [ssl key].key;
        ssl_protocols [ssl protocols];
        ssl_ciphers [ssl ciphers];

        location /webmin {
            proxy_redirect http://127.0.0.1:10000/ https://site.example.com/webmin/;
            proxy_pass http://127.0.0.1:10000/;
            proxy_set_header Host $Host:$server_port;
        }
}
1
BBB

Essayez cette solution, ça marche bien pour moi:

/etc/webmin/config:

webprefix=/webmin
webprefixnoredir=1
relative_redir=0   # pay attention on this
referer=www.examle.com

/etc/webmin/miniserv.conf:

cookiepath=/webmin

nginx config:

location /webmin/ { 
    proxy_pass http://localhost:10000/;

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

Ne pas ajouter proxy_set_header Host $Host;, cela ne fonctionnera pas.

Webmin devrait être disponible sur http://www.examle.com/webmin/

Source

1
Orion

Il semble que votre navigateur Web mette naturellement en cache les pages de connexion problématiques et/ou que les en-têtes renvoyés pour les pages de connexion ne soient pas corrects.

Vérifiez la vitesse de chargement de la page. Lorsque vous vous connectez et appuyez sur le bouton de connexion, si le temps de chargement est ridiculement rapide par rapport au premier chargement de l'écran de connexion, vous savez que la page précédente a été mise en cache, puis en cours de rechargement.

Pour résoudre temporairement ce problème, configurez votre navigateur Web pour désactiver toutes les formes de mise en cache et activer les cookies.

Il est également possible que les valeurs de cookie n'aient pas été utilisées au moment où la page est demandée après une connexion réussie. Il en résulte que chaque utilisateur voit le même contenu qu'un invité.

Si vous souhaitez approfondir vos connaissances techniques, recherchez des en-têtes HTTP sur chaque demande à l'aide d'un outil de ligne de commande avancé tel que CURL ou peut-être webpagetest.org peut-il également être utile, en particulier pour le minutage des pages. L'en-tête le plus important à rechercher est:

Set-Cookie

Une fois que le bouton de connexion est sélectionné et que les informations d'identification correctes sont utilisées, la réponse renvoyée au navigateur doit être accompagnée d'en-têtes HTTP contenant Set-Cookie pour indiquer qu'un utilisateur est connecté de manière à ce que la page suivante s'affiche. le même site est chargé dans le même navigateur, un cookie est envoyé au serveur pour indiquer que l'utilisateur s'est déjà connecté auparavant.

Et si vous souhaitez augmenter les chances que les demandes du serveur soient consignées par vous, désactivez simplement la mise en cache pendant un certain temps et effectuez vos tests. Vous pouvez voir quelques entrées répétées, en particulier si vos pages contiennent toujours la même image.

0
Mike