Configuration Reverse Proxy pour 2 serveurs

What type of hardware are you using: Old laptop or computer
What YunoHost version are you running: last stable
How are you able to access your server: The webadmin
SSH
Direct access via physical keyboard/screen
Are you in a special context or did you perform specific tweaking on your YunoHost instance ?: no

Describe your issue

Hello!

Voici le contexte :

  • une box free avec IPv4 full stack fixe.
  • un serveur ynh-main (pc) ip lan : 192.168.1.121
  • un serveur ynh-test (pc) ip lan : 192.168.1.123
  • un nom de domaine chez au vĂ© hache.
  • mydomain.com + sub.mydomain.com ===> serveur ynh-main
  • local domain (laptop.local) ===> serveur ynh-test

Je tente de configurer un reverse proxy via l’app redirect sur le serveur ynh-main pour atteindre le serveur ynh-test.

Pour ce faire j’ai ajouté un sub.mydomain.com sur ynh-main pour y installer l’app redirect.

L’app est configurée de la manière suivante :

  • Choisissez le domaine sur lequel vous souhaitez installer cette application : sub.mydomain.com
  • Choisissez le chemin d’URL (après le domaine) oĂą cette application doit ĂŞtre installĂ©e : “/”
  • Type de redirection : Reverse-proxy…
  • Cible : https://192.168.1.123
  • Qui doit avoir accès Ă  cette application ? (Ceci peut ĂŞtre modifiĂ© ultĂ©rieurement) : Visiteurs

Lorsque je tape sub.mondomain.com, je n’atteint pas ynh-test, mais la page de login du portail ynh-main…

J’ai également tenté en mettant pour cible https://laptop.local mais le résultat est identique.

Il y a un paramètre qui m’échappe… Je continue mes recherches mais si quelqu’un a une idée ou plusieurs je suis preneur^^

@+

Share relevant logs or error messages

Bonsoir @franckt

On constate que le chemin /yunohost/sso après n’importe quel nom de domaine d’un ynh, mène toujours sur le même SSO, celui du domaine principal. Pour le contourner, il faut commenter les lignes suivantes dans le fichier de conf nginx du sous-domaine sub.mydomain.com.confsur le ynh-main:

access_by_lua_file /usr/share/ssowat/access.lua;
(...)
include /etc/nginx/conf.d/yunohost_sso.conf.inc;
include /etc/nginx/conf.d/yunohost_admin.conf.inc;
include /etc/nginx/conf.d/yunohost_api.conf.inc;

=> Cela permet de toucher l’interface admin du ynh.test.

Pour accéder à son SSO il faut aussi créer sur le ynh-test le nom de domaine public qui lui correspond (sub.mydomain.com).
On peut ensuite accéder au SSO par sub.mydomain.com et à l’interface admin par sub.mydomain.com/yunohost/admin.
Normalement, le ynh-test reste accessible (admin + sso) sur son nom de domaine local et son nom de domaine public.
J’espère que cela t’aide.

Bonjour @otm33

Merci beaucoup pour tes conseils!

J’obtiens plusieurs résultats en suivant tes conseils :

  • Depuis un pc “client” sur le mĂŞme rĂ©seau local que les 2 serveurs, j’accède au SSO du ynh-test, et ce mĂŞme sans devoir crĂ©er le mĂŞme sub.mydomain.com sur le ynh-test. Je n’ai pas testĂ© mais peut ĂŞtre que je peux Ă©galement atteindre la webadmin. J’ai créé ensuite donc le mĂŞme sub.mydomain.com sur ynh-test et j’atteints bien la webadmin du ynh-test en plus du SSO.

  • Depuis le net, j’accède Ă  une page Nginx :

Welcome to nginx!

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.

Est-ce qu’il ne faudrait pas apporter des modifications sur le sub.mydomain.com.conf du ynh-test ?

Je manque malheureusement de connaissances concernant le fonctionnement de nginx…

Merci pour ton aide.

Tu as bien laissé les paramètres indiqués dans ton premier message pour l’application redirect ?

Oui, je viens même de désintaller et réinstaller Redirect, en le paramétrant comme expliqué dans mon premier post.

Il y a un fichier de conf nginx (redirect.conf) sur ynh-main correspondant à l’installation de Redirect, peut-être faut-il le modifier?

Autre chose qui attire mon attention, ne faut-il pas ajouter une ligne du type 192.168.1.123 sub.mydomain.com dans le hosts du ynh-main ?

Non… je dois oublier qqch… mais quoi ? Peux-tu poster /etc/nginx/conf.d/sub.mydomain.com.conf du ynh-test ?

Sur le ynh-test, regarde aussi dans /etc/ssowat/conf.json si tu trouves bien tes différents urls -local et public- dans les clés “domain_portal_urls” et “permissions”: {(…) “uris”. Penser aussi à recharger nginx.

J’ai pas tout lu mais vous avez deux solutions :

  1. Installer adguard sur le serveur principal et dans l’application faire une redirection du domaine vers l’adresse ip puis créer une app Redirect vers l’adresse ip en mode Proxy.
  2. Ajouter domain ip_locale au fichier /etc/hosts de ta machine principale et créer l’app Redirect de la même manière

Cela ne permettra que de toucher l’interface admin. Par défaut le sso n’est pas joignable sur ip locale.

Hello @jarod5001

Je viens de tester cette solution, je n’ai pas touché à la configuration de Redirect, j’obtiens le même résultat.

D’ailleurs, il me semblait que la synthax était plutôt l’inverse = “IP” “sub.mondomain.com” pour que ynh-main sache à quelle adresse ip correspond le sub.domain.com dans le réseau local, et je l’avais ajouté avant je pense pour trouver une solution donc dans /etc/hosts j’ai ces 2 lignes :
192.168.1.123 sub.mondomain.com
sub.mondomain.com 192.168.1.123

Ou alors je me trompe et il faut mettre l’adresse ip de ynh-main?

en front ynh-main = 192.168.1.121 (machine principale)
en back ynh-test = 192.168.1.123 (seconde machine)

ynh-main sait à quoi correspond sub.domain.conf puisque cela est déclaré dans la conf de redirect.
La difficulté n’est pas de rediriger sub.domain.conf vers 192.168.1.123 mais d’accéder également au portail sso.
Si on se limite à rediriger sub.domain.conf vers 192.168.1.123, on n’a accès qu’au portail admin (après modif du fichier conf nginx).

Le voici :

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    listen 80;
    listen [::]:80;
    server_name sub.mydomain.com;

    access_by_lua_file /usr/share/ssowat/access.lua;

    include /etc/nginx/conf.d/acme-challenge.conf.inc;

    location ^~ '/.well-known/ynh-diagnosis/' {
        alias /var/www/.well-known/ynh-diagnosis/;
    }

    
    location ^~ '/.well-known/autoconfig/mail/' {
        alias /var/www/.well-known/sub.mydomain.com/autoconfig/mail/;
    }
    

    
    
    location / {
        return 301 https://$host$request_uri;
    }
    
    

    include /etc/nginx/conf.d/yunohost_http_errors.conf.inc;

    access_log /var/log/nginx/sub.mydomain.com-access.log;
    error_log /var/log/nginx/sub.mydomain.com-error.log;
}

server {
    
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    
    server_name sub.mydomain.com;

    include /etc/nginx/conf.d/security.conf.inc;

    ssl_certificate /etc/yunohost/certs/sub.mydomain.com/crt.pem;
    ssl_certificate_key /etc/yunohost/certs/sub.mydomain.com/key.pem;

    
    

    
    location ^~ '/.well-known/autoconfig/mail/' {
        alias /var/www/.well-known/sub.mydomain.com/autoconfig/mail/;
    }
    

    access_by_lua_file /usr/share/ssowat/access.lua;

    include /etc/nginx/conf.d/sub.mydomain.com.d/*.conf;

    include /etc/nginx/conf.d/yunohost_sso.conf.inc;
    include /etc/nginx/conf.d/yunohost_admin.conf.inc;
    include /etc/nginx/conf.d/yunohost_api.conf.inc;
    include /etc/nginx/conf.d/yunohost_http_errors.conf.inc;

    access_log /var/log/nginx/sub.mydomain.com-access.log;
    error_log /var/log/nginx/sub.mydomain.com-error.log;
}

Je viens de me rendre compte que la redirection ne fonctionne plus en local, je tombe sur la même page nginx (Welcome etc…) que depuis le net…

Sur le ynh-main tu as bien pour /etc/nginx/conf.d/sub.mydomain.com.conf :

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    listen 80;
    listen [::]:80;
    server_name sub.mydomain.com;

   # access_by_lua_file /usr/share/ssowat/access.lua;

    include /etc/nginx/conf.d/acme-challenge.conf.inc;

    location ^~ '/.well-known/ynh-diagnosis/' {
        alias /var/www/.well-known/ynh-diagnosis/;
    }

    
    location ^~ '/.well-known/autoconfig/mail/' {
        alias /var/www/.well-known/sub.mydomain.com/autoconfig/mail/;
    }
    

    
    
    location / {
        return 301 https://$host$request_uri;
    }
    
    

    include /etc/nginx/conf.d/yunohost_http_errors.conf.inc;

    access_log /var/log/nginx/sub.mydomain.com-access.log;
    error_log /var/log/nginx/sub.mydomain.com-error.log;
}

server {
    
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    
    server_name sub.mydomain.com;

    include /etc/nginx/conf.d/security.conf.inc;

    ssl_certificate /etc/yunohost/certs/sub.mydomain.com/crt.pem;
    ssl_certificate_key /etc/yunohost/certs/sub.mydomain.com/key.pem;

    
    

    
    location ^~ '/.well-known/autoconfig/mail/' {
        alias /var/www/.well-known/sub.mydomain.com/autoconfig/mail/;
    }
    

   # access_by_lua_file /usr/share/ssowat/access.lua;

    include /etc/nginx/conf.d/sub.mydomain.com.d/*.conf;

   # include /etc/nginx/conf.d/yunohost_sso.conf.inc;
   # include /etc/nginx/conf.d/yunohost_admin.conf.inc;
   # include /etc/nginx/conf.d/yunohost_api.conf.inc;
    include /etc/nginx/conf.d/yunohost_http_errors.conf.inc;

    access_log /var/log/nginx/sub.mydomain.com-access.log;
    error_log /var/log/nginx/sub.mydomain.com-error.log;
}

et dans le /etc/nginx/conf.d/sub.mydomain.com.d/redirect.conf

#sub_path_only rewrite ^/$ / permanent;
location / {

  proxy_pass        https://192.168.1.123;
  proxy_redirect    off;
  proxy_set_header  Host $host;
  proxy_set_header  X-Real-IP $remote_addr;
  proxy_set_header  X-Forwarded-Proto $scheme;
  proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header  X-Forwarded-Host $server_name;
  proxy_set_header  X-Forwarded-Port $server_port;

  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";

  # Include SSOWAT user panel.
  include conf.d/yunohost_panel.conf.inc;
  more_clear_input_headers 'Accept-Encoding';
}

1 Like

En local, 192.168.1.123 te mène bien toujours vers l’interface admin de ton ynh-test ?

Oui je reload et restart nginx Ă  chaque modification de la configuration.

Voici ce que j’ai dans le conf.json :
Le sub.domain.com en question qui est créé sur le ynh-main et sur le ynh-test est laptop.mydomain.com, j’ai eu la flemme de renommer tous les subdomains^^

{
    "cookie_name": "yunohost.portal",
    "cookie_secret_file": "/etc/yunohost/.ssowat_cookie_secret",
    "domain_portal_urls": {
        "amxbans.mydomain.com": "mydomain.com/yunohost/sso",
        "bans.mydomain.com": "mydomain.com/yunohost/sso",
        "cloud.mydomain.com": "mydomain.com/yunohost/sso",
        "cs.mydomain.com": "mydomain.com/yunohost/sso",
        "cs2.mydomain.com": "mydomain.com/yunohost/sso",
        "cs2dm.mydomain.com": "mydomain.com/yunohost/sso",
        "default": "/yunohost/admin",
        "laptop.mydomain.com": "mydomain.com/yunohost/sso",
        "sourcebans.mydomain.com": "mydomain.com/yunohost/sso",
        "mydomain.com": "mydomain.com/yunohost/sso"
    },
    "permissions": {
        "core_skipped": {
            "auth_header": false,
            "public": true,
            "uris": [
                "mydomain.com/yunohost/admin",
                "amxbans.mydomain.com/yunohost/admin",
                "bans.mydomain.com/yunohost/admin",
                "cloud.mydomain.com/yunohost/admin",
                "cs.mydomain.com/yunohost/admin",
                "cs2.mydomain.com/yunohost/admin",
                "cs2dm.mydomain.com/yunohost/admin",
                "laptop.mydomain.com/yunohost/admin",
                "sourcebans.mydomain.com/yunohost/admin",
                "mydomain.com/yunohost/api",
                "amxbans.mydomain.com/yunohost/api",
                "bans.mydomain.com/yunohost/api",
                "cloud.mydomain.com/yunohost/api",
                "cs.mydomain.com/yunohost/api",
                "cs2.mydomain.com/yunohost/api",
                "cs2dm.mydomain.com/yunohost/api",
                "laptop.mydomain.com/yunohost/api",
                "sourcebans.mydomain.com/yunohost/api",
                "mydomain.com/yunohost/portalapi",
                "amxbans.mydomain.com/yunohost/portalapi",
                "bans.mydomain.com/yunohost/portalapi",
                "cloud.mydomain.com/yunohost/portalapi",
                "cs.mydomain.com/yunohost/portalapi",
                "cs2.mydomain.com/yunohost/portalapi",
                "cs2dm.mydomain.com/yunohost/portalapi",
                "laptop.mydomain.com/yunohost/portalapi",
                "sourcebans.mydomain.com/yunohost/portalapi",
                "re:^[^/]*/502\\.html$",
                "re:^[^/]*/\\.well-known/ynh-diagnosis/.*$",
                "re:^[^/]*/\\.well-known/acme-challenge/.*$",
                "re:^[^/]*/\\.well-known/autoconfig/mail/config-v1\\.1\\.xml.*$"
            ],

Dance fichier il y a :
“redirected_urls”: {}, ===> rien à voir?

Oui ça n’a pas bougé ça.

Non.
C’est le /etc/ssowat/conf.json du ynh-test qu’il faut regarder.

Pas tout Ă  fait :

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    listen 80;
    listen [::]:80;
    server_name laptop.mydomain.com;

    access_by_lua_file /usr/share/ssowat/access.lua;

    include /etc/nginx/conf.d/acme-challenge.conf.inc;

    location ^~ '/.well-known/ynh-diagnosis/' {
        alias /var/www/.well-known/ynh-diagnosis/;
    }

    
    location ^~ '/.well-known/autoconfig/mail/' {
        alias /var/www/.well-known/laptop.mydomain.com/autoconfig/mail/;
    }
    

    
    
    include /etc/nginx/conf.d/laptop.mydomain.com.d/*.conf;
    

    include /etc/nginx/conf.d/yunohost_http_errors.conf.inc;

    access_log /var/log/nginx/laptop.mydomain.com-access.log;
    error_log /var/log/nginx/laptop.mydomain.com-error.log;
}

server {
    
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    
    server_name laptop.mydomain.com;

    include /etc/nginx/conf.d/security.conf.inc;

    ssl_certificate /etc/yunohost/certs/laptop.mydomain.com/crt.pem;
    ssl_certificate_key /etc/yunohost/certs/laptop.mydomain.com/key.pem;

    
    more_set_headers "Strict-Transport-Security : max-age=63072000; includeSubDomains; preload";
    
    
    # OCSP settings
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /etc/yunohost/certs/laptop.mydomain.com/crt.pem;
    resolver 1.1.1.1 9.9.9.9 valid=300s;
    resolver_timeout 5s;
    

    
    location ^~ '/.well-known/autoconfig/mail/' {
        alias /var/www/.well-known/laptop.mydomain.com/autoconfig/mail/;
    }
    

   # access_by_lua_file /usr/share/ssowat/access.lua;

   # include /etc/nginx/conf.d/laptop.mydomain.com.d/*.conf;

   # include /etc/nginx/conf.d/yunohost_sso.conf.inc;
   # include /etc/nginx/conf.d/yunohost_admin.conf.inc;
   # include /etc/nginx/conf.d/yunohost_api.conf.inc;
    include /etc/nginx/conf.d/yunohost_http_errors.conf.inc;

    access_log /var/log/nginx/laptop.mydomain.com-access.log;
    error_log /var/log/nginx/laptop.mydomain.com-error.log;
}

Oui ici j’ai la même chose que toi

#sub_path_only rewrite ^/$ / permanent;
location / {

  proxy_pass        https://192.168.1.123;
  proxy_redirect    off;
  proxy_set_header  Host $host;
  proxy_set_header  X-Real-IP $remote_addr;
  proxy_set_header  X-Forwarded-Proto $scheme;
  proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header  X-Forwarded-Host $server_name;
  proxy_set_header  X-Forwarded-Port $server_port;
  
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";

  # Include SSOWAT user panel.
  include conf.d/yunohost_panel.conf.inc;
  more_clear_input_headers 'Accept-Encoding';
}

Je tente de modifier donc le laptop.mydomain.conf pour qu’il soit identique au tient!

Malheureusement pas d’évolution.

Je viens de jeter un œil par curiosité au fichier /etc/ssowat/conf.json du ynh-test :

{
    "cookie_name": "yunohost.portal",
    "cookie_secret_file": "/etc/yunohost/.ssowat_cookie_secret",
    "domain_portal_urls": {
        "default": "/yunohost/admin",
        "laptop.local": "laptop.local/yunohost/sso",
        "laptop.mydomain.com": "laptop.mydomain.com/yunohost/sso",
        "panel.local": "panel.local/yunohost/sso",
        "ynd.local": "ynd.local/yunohost/sso",
        "ynd.mydomain.com": "ynd.mydomain.com/yunohost/sso"
    },
    "permissions": {
        "core_skipped": {
            "auth_header": false,
            "public": true,
            "uris": [
                "laptop.local/yunohost/admin",
                "panel.local/yunohost/admin",
                "laptop.mydomain.com/yunohost/admin",
                "ynd.mydomain.com/yunohost/admin",
                "ynd.local/yunohost/admin",
                "laptop.local/yunohost/api",
                "panel.local/yunohost/api",
                "laptop.mydomain.com/yunohost/api",
                "ynd.mydomain.com/yunohost/api",
                "ynd.local/yunohost/api",
                "laptop.local/yunohost/portalapi",
                "panel.local/yunohost/portalapi",
                "laptop.mydomain.com/yunohost/portalapi",
                "ynd.mydomain.com/yunohost/portalapi",
                "ynd.local/yunohost/portalapi",
                "re:^[^/]*/502\\.html$",
                "re:^[^/]*/\\.well-known/ynh-diagnosis/.*$",
                "re:^[^/]*/\\.well-known/acme-challenge/.*$",
                "re:^[^/]*/\\.well-known/autoconfig/mail/config-v1\\.1\\.xml.*$"
            ],

Il y a une différence avec celui du ynh-main au niveau de la ligne :

        "laptop.mydomain.com": "laptop.mydomain.com/yunohost/sso",

C’est par ce que je ne peux pas le définir en subdomain, quand je l’ajoute via la webadmin je ne peux qu’utiliser la fonction “Je veux ajouter un domaine que je possède”.

Faut-il remplacer par “laptop.mydomain.com”: “mydomain.com/yunohost/sso”, ?

Et cette partie ““redirected_urls”: {},” est identique au ynh-main.

Edit : je viens d’accèder au SSO de ynh-test par le net! Par contre sur le réseau local ça m’envoie toujours sur la page nginx Welcome etc…

Edit2 : j’accède également à la webadmin en tapant laptop.mydomain.com/yunohost/admin

Edit : je viens d’accèder au SSO de ynh-test par le net! Par contre sur le réseau local ça m’envoie toujours sur la page nginx Welcome etc…

Edit2 : j’accède également à la webadmin en tapant laptop.mydomain.com/yunohost/admin

:+1: