[RESOLU] Deux services utilisant Nginx

Bonjour à tous :smiley:

Je ne sais pas si mon titre est correct mais voici mon interrogation :

J’utilise deux applications passant par nginx et je me posais la question comment dans les fichiers de configuration, peut on faire cohabiter l’utilisation de ses deux logiciels utilisant tout deux nginx ?

Salut;

Au fait c’est quoi ces applications ?

L’aide est toujours plus facile si l’on détaille ce que l’on désire faire et obtenir.

A moins que ce soit classé “secret défense” !!!

:grinning:

@Nestor … en effet c’est classé secret mais pour toi je vais faire une exception :slight_smile:

  • Matrix-synapse et CozyCloud :slight_smile:

Mais chut nous sommes écoutés :wink:

Par exemple pour matrix, en m’étant référé a ceci:

On s’y connecte par défaut comme ça en local:

https://localhost:8448

Donc dans ton vhost de nginx; tu insères ce type de zone:

location ^~ /matrix {
        auth_basic "matrix";
        auth_basic_user_file "/etc/nginx/passwd/matrix_passwd";  ###générer un passwd
        proxy_set_header    X-Real-IP  $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    Host $http_host;
        proxy_redirect      off;
        proxy_pass  http://127.0.0.1:8448;
    }

Idem pour tout ce que tu veux faire passer en reverse-proxy via nginx.

:grinning:

merci de ta réponse …

Je peux ajouter tout dans le même fichier (c’était ça ma question en fait) car je me connecte avec les deux sur le port 443.

Je ne connais pas cosy, mais en regardant la page web via apaches:

je vois que le reverse dans le vhost pointe sur le 127.0.0.1:9104

Donc en insérant dans ton vhost un truc du genre:

server {
    listen :443; 
    listen [::]:443;
    server_name   mondomaine.fr;
    index index.html index.php;
#./... ##les lignes pour les logs éventuellement, le chemin vers tes certifs SSL, 
##un vhost php ou un include vers ce vhost du genre "       include /etc/nginx/conf.d/php.conf;"
#./...puis
location ^~ /matrix {
        auth_basic "matrix";
        auth_basic_user_file "/etc/nginx/passwd/matrix_passwd";  ###générer un passwd
        proxy_set_header    X-Real-IP  $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    Host $http_host;
        proxy_redirect      off;
        proxy_pass  http://127.0.0.1:8448;
    }
location ^~ /cozy {
        auth_basic "cozy";
        auth_basic_user_file "/etc/nginx/passwd/cozy_passwd";  ###générer un passwd
        proxy_set_header    X-Real-IP  $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    Host $http_host;
        proxy_redirect      off;
        proxy_pass  http://127.0.0.1:9104;
    }
}

ça devrait fonctionner, ou du moins t’approcher de la vérité!!, sinon regarde les logs pour adapter.
Joignables sous cette forme:

https://mondomaine.fr/cozy
et
https://mondomaine.fr/matrix

Merci @Nestor, ça c’est une réponse clé en main. Si je peux me permet, j’ai des pleins :slight_smile: de questions supplémentaires par curiosité et compréhension car je veux être sur de comprendre toutes les lignes. Je vais donc commenter les différentes lignes de ton “exemple” et si ça te dérange pas de me faire un retour sur ceux où je n’indique rien.

 server {

// écoute sur le port https
        listen :443;

// Je dirais écoute sur le port https à partir de n'importe quelle adresse entrante ?                                              
        listen [::]:443;

// Mon domaine extérieur avec lequel je peux joindre mon fichier
        server_name   mondomaine.fr;

// Je suppose qu'il doit rechercher s'il trouve ces "fichiers" en priorité
        index index.html index.php;

// Partie pour les requêtes MATRIX
    location ^~ /matrix {

// Ces lignes me sont inconnues, je cromprends juste un  principe de password mais pourquoi, comment ... aucune idée ? 
            auth_basic "matrix";
            auth_basic_user_file "/etc/nginx/passwd/matrix_passwd";  ###générer un passwd
            proxy_set_header    X-Real-IP  $remote_addr;
            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header    Host $http_host;
            proxy_redirect      off;

// Redirigé les requêtes reçues vers le service (local) adéquat.
            proxy_pass  http://127.0.0.1:8448;
        }
    ....
    }

J’attends avec impatience ton retour :slight_smile:

Encore merci

EDIT : Peut on, du coup, utiliser le port 443 pour les deux applications. Je veux dire ouvrir que le port 443 vers l’extérieur et utiliser les 2 services via http://nomdedomaine.fr/nomduservice

Salut,

// écoute sur le port https
        listen :443; ## écoute le 443 en ipv4

// Je dirais écoute sur le port https à partir de n'importe quelle adresse entrante ?                                              
        listen [::]:443; ## écoute le 443 en ipv6

// Mon domaine extérieur avec lequel je peux joindre mon fichier
        server_name   mondomaine.fr; ##oui, en créer un pointant sur l'ip de ton serveur chez un registrar, ou utiliser l'ip directe,                                      ##mais moins pratique, et ce n'est pas pour ce que ça coûte !!!

// Je suppose qu'il doit rechercher s'il trouve ces "fichiers" en priorité
        index index.html index.php; #Dans le cas de l'exemple matrix et cozy en reverse proxy pas nécessaire, mais si tu installes
                                    #d'autres sites dans /var/www par exemple oui, la plupart du temps ces noms sont utilisés.

// Partie pour les requêtes MATRIX
    location ^~ /matrix {

// Ces lignes me sont inconnues, je cromprends juste un  principe de password mais pourquoi, comment ... aucune idée ? 
            auth_basic "matrix";
            auth_basic_user_file "/etc/nginx/passwd/matrix_passwd";  ###générer un passwd ###voir + bas
            proxy_set_header    X-Real-IP  $remote_addr;
            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header    Host $http_host;
            proxy_redirect      off;

// Redirigé les requêtes reçues vers le service (local) adéquat.
            proxy_pass  http://127.0.0.1:8448; ###avec netstat tu identifies ton application et son port d'écoute à reporter ici.
        }
    ....
    }

Pour le mot de passe (pas forcément nécessaire si l’application dispose d’une authentification déjà elle même; sauf à vouloir une double authentification); mais si pas d’identification sur l’appli elle même :

mkdir -p /etc/nginx/passwd
printf "Login:`openssl passwd -apr1`\n" >> /etc/nginx/passwd/matrix_passwd #Rentrer 2 fois le mot de passe
printf "Login:`openssl passwd -apr1`\n" >> /etc/nginx/passwd/cozy_passwd #idem
chmod 640 /etc/nginx/passwd/*
chown www-data:www-data /etc/nginx/passwd/*
service nginx restart

On peut aussi générer un password avec htpassword d’apaches2-utils

Non:

https://nomdedomaine.fr/nomduservice # T’as oublié le “s” de https

1 J'aime

Merci @Nestor pour toutes tes explications :wink:

Merci du retour;

Donc je présume que t’as réussi à t’en sortir et de créer des reverses-proxy pour joindre tes applications au travers de nginx.

:wink:

@Nestor oui tout fonctionne correctement :slight_smile:

Marquer le sujet en résolu donc…

A+++