OMV derriere Nginx : Failure après identification

sebastien4444

Nouveau membre
8 Mai 2024
18
2
3
Bonjour,

J'ai un serveur TBAO R1 sur lequel est installé openmediavault en bare metal [nom d'hôte : srv-omv - IP : 192.168.1.10].
Dans OMV, j'ai plusieurs container dont SWAG que j'utilise pour sécuriser mes connexions et rediriger les requetes externes vers la bonne app.
En terme de réseau docker, j'ai un réseau 'sebnet' (bridge) sur lequel sont tous mes containers dont Swag.
A partir du container swag, je peux pinger tous mes autres container (app) par leur nom d'hôte, ainsi que mon hôte OMV lui-même (ping srv-omv : OK)

Quand je passe par l'url local pour accéder à la GUI d'OMV via http://192.168.1.10 : tout se passe bien.
Mais quand j'essaye d'accéder de l'extérieur via l'url https://omv.sebdomaine.com, j'ai un soucis et voila le comportement :
- j'arrive à atteindre la page de login et je m'identifie
- là, j'arrive sur une page noire avec écrit en rouge "Software Failure. Press left mouse button to continue. The server is unavailable to handle this request right now"
- parfois, en faisant un clic-gauche comme suggéré, ça me ramène sur la pas de login à nouveau, parfois non
- mais à chaque fois ça termine sur cette page et le clic gauche n'y fait rien.
- à ce moment, dans la barre d'adresse, j'ai https://omv.sebdomaine.com/#/503 vers laquelle j'ai été redirigé
- si je remplace le "503" par "login", je retombe bien sur la page d'identification (mais m'identifier me fait retomber dans le même problème)
Je précise qu'OMV est bien joignable en local au même moment.

Concernant les logs nginx, voilà ce que j'ai en terme d'erreur pour omv (ce message en boucle) :
2024/05/30 21:33:15 [warn] 766#766: *277 upstream server temporarily disabled while reading response header from upstream, client: 192.168.1.254, server: omv.*, request: "GET /rpc.php HTTP/2.0", upstream: "http://192.168.1.10:80/rpc.php", host: "omv.sebdomaine.com"

Et en terme de log d'accès pour omv :
[30/May/2024:21:38:20 +0200] Status: 301
- Request: POST /rpc.php HTTP/2.0
Request_uri: /rpc.php
Host: omv.sebdomaine.com
Remote_addr: 192.168.1.254
Proxy_host: srv-omv
Proxy_IP(s): 192.168.1.254
Http_x_real_ip: -
User_Client: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0
[30/May/2024:21:38:20 +0200] Status: 301
- Request: GET /rpc.php HTTP/2.0
Request_uri: /rpc.php
Host: omv.sebdomaine.com
Remote_addr: 192.168.1.254
Proxy_host: srv-omv
Proxy_IP(s): 192.168.1.254
Http_x_real_ip: -
User_Client: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0
[30/May/2024:21:38:26 +0200] Status: 200
- Request: POST /rpc.php HTTP/2.0
Request_uri: /rpc.php
Host: omv.sebdomaine.com
Remote_addr: 192.168.1.254
Proxy_host: srv-omv
Proxy_IP(s): 192.168.1.254
Http_x_real_ip: -
User_Client: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0

Et logs d'acces nginx
::1 - - [30/May/2024:21:36:15 +0200] "POST /rpc.php HTTP/1.1" 301 162 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0"
::1 - - [30/May/2024:21:36:15 +0200] "GET /rpc.php HTTP/1.1" 301 162 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0"

Rien dans les logs d'erreur nginx.

J'ai l'impression qu'il y a une histoire de mappage de header mais malgré des heures de recherches (web et gpt-4o) et plusieurs tentatives de modification de mon fichier openmediavault.subdomain.conf, j'en suis toujours au même point.
Voila à quoi ressemble ce fichier actuellement :


log_format omv_log '[$time_local] Status: $status \n'
'- Request: $request \n'
'Request_uri: $request_uri \n'
'Host: $host \n'
'Remote_addr: $remote_addr \n'
'Proxy_host: $proxy_host \n'
'Proxy_IP(s): $proxy_add_x_forwarded_for \n'
'Http_x_real_ip: $http_x_real_ip \n'
'User_Client: $http_user_agent';
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name omv.*;

access_log /config/log/nginx/omv-access.log omv_log;
error_log /config/log/nginx/omv-error.log debug;

include /config/nginx/ssl.conf;

client_max_body_size 0;
add_header Referrer-Policy no-referrer;
add_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive";

root /config/www;
index index.html index.htm index.php;
location / {
include /config/nginx/proxy.conf;
include /config/nginx/resolver.conf;
proxy_redirect http:// https://;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
set $upstream_app srv-omv;
set $upstream_port 80;
set $upstream_proto http;
proxy_pass $upstream_proto://$upstream_app:$upstream_port;
}
}

Pour info, j'ai à un moment éssayé d'ajouter proxy_set_header Host $host; mais c'est encore pire, je n'accédais plus du tout à omv (nginx 400 bad request il me semble)

A tout hasard si quelqu'un aurait déja éssayer de paramétrer nginx pour omv... 🤓
 
Sinon voici mon fichier openmediavault.subdomain.conf (modifié avec ton ip et ton sous-domaine) qui est une adaptation de _template.subdomain.conf.sample :

Code:
## Version 2023/05/31
# REMOVE THIS LINE BEFORE SUBMITTING: The structure of the file (all of the existing lines) should be kept as close as possible to this template.
# REMOVE THIS LINE BEFORE SUBMITTING: Look through this file for <tags> and replace them. Review other sample files to see how things are done.
# REMOVE THIS LINE BEFORE SUBMITTING: The comment lines at the top of the file (below this line) should explain any prerequisites for using the proxy such as DNS or app settings.
# make sure that your <container_name> container is named <container_name>
# make sure that your dns has a cname set for <container_name>
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name omv.*;
    include /config/nginx/ssl.conf;
    client_max_body_size 0;
    # enable for ldap auth (requires ldap-location.conf in the location block)
    #include /config/nginx/ldap-server.conf;
    # enable for Authelia (requires authelia-location.conf in the location block)
    # include /config/nginx/authelia-server.conf;
    # enable for Authentik (requires authentik-location.conf in the location block)
    #include /config/nginx/authentik-server.conf;
    location / {
        # enable the next two lines for http auth
        #auth_basic "Restricted";
        #auth_basic_user_file /config/nginx/.htpasswd;
        # enable for ldap auth (requires ldap-server.conf in the server block)
        #include /config/nginx/ldap-location.conf;
        # enable for Authelia (requires authelia-server.conf in the server block)
        # include /config/nginx/authelia-location.conf;
        # enable for Authentik (requires authentik-server.conf in the server block)
        #include /config/nginx/authentik-location.conf;
        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        set $upstream_app 192.168.1.10;
        set $upstream_port 80;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;
        # REMOVE THIS LINE BEFORE SUBMITTING: Additional proxy settings such as headers go below this line, leave the blank line above.
    }
    # REMOVE THIS LINE BEFORE SUBMITTING: Some proxies require one or more additional location blocks for things like API or RPC endpoints.
    # REMOVE THIS LINE BEFORE SUBMITTING: If the proxy you are making a sample for does not require an additional location block please remove the commented out section below.
    # location ~ (/<container_name>)?/api {
    #     include /config/nginx/proxy.conf;
    #     include /config/nginx/resolver.conf;
    #     set $upstream_app <container_name>;
    #     set $upstream_port <port_number>;
    #     set $upstream_proto <http or https>;
    #     proxy_pass $upstream_proto://$upstream_app:$upstream_port;
    #
    #     # REMOVE THIS LINE BEFORE SUBMITTING: Additional proxy settings such as headers go below this line, leave the blank line above.
    # }
}
 
Bonjour electroger,

Est ce que tu as essayé en navigation privée ou en vidant ton cache ?
Oui, pour debugger, j'ai aussi essayé de 4 navigateurs différents et à partir de réseaux différents 😅
Le résultat est toujours le même, c'est donc bien lié à OMV (ou la config Swag pour OMV...)

Sinon voici mon fichier openmediavault.subdomain.conf (modifié avec ton ip et ton sous-domaine) qui est une adaptation de _template.subdomain.conf.sample :
C'es gentil, mais toutes les lignes présentes dans ton fichier le sont déja dans le mien et j'avais quasiment le même fichier avant d'ajouter certains set_proxy_header, ainsi que des logs spécifiques à cette app
 
Est ce que tu peux faire dans ton terminal un : tail -f /var/log/auth.log
Et donner le résultat après une tentative de connexion ?
 
Finalement, je suis tombé sur ce ce post qui m'a donné l'idée d'aller modifier le fichier /config/nginx/resolver.conf de swag pour rajouter l'option qui désactive la résolution de nom par ipv6 :

resolver 127.0.0.11 valid=30s [B]ipv6=off[/B]

ça a résolu le problème.
Merci quand même pour les réponses 😇
 
  • J'aime
Réactions: EVO et electroger