Projet

Général

Profil

Tâche #18483

Scénario #18408: Etablir une config paramétrable de NGINX pour servir les applications WEB sur les port 80 et 443

Avoir genconfig et au moins une autre application en mode conteneur derrière un reverse proxy unique sur le port 80 et sur le port 443

Ajouté par Laurent Flori il y a plus de 7 ans. Mis à jour il y a plus de 7 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Début:
19/12/2016
Echéance:
% réalisé:

80%

Temps estimé:
4.00 h
Temps passé:
Restant à faire (heures):
0.0

Historique

#1 Mis à jour par Laurent Flori il y a plus de 7 ans

  • Statut changé de Nouveau à En cours

#2 Mis à jour par Laurent Flori il y a plus de 7 ans

  • % réalisé changé de 0 à 80
  • Restant à faire (heures) changé de 4.0 à 0.5

#3 Mis à jour par Laurent Flori il y a plus de 7 ans

Voila une solution possible

- Créer deux répertoires dans le dossier /etc/nginx:

mkdir /etc/nginx/web.d
mkdir /etc/nginx/upstream.d

- Modifier le fichier /etc/nginx/nginx.conf
Dans le bloc http{} ajouter ces deux lignes
    include /etc/nginx/upstream.d/*.conf;
    include /etc/nginx/sites-enabled/*.conf;

- Créer un fichier /etc/nginx/sites-available/base.conf
server {
         listen 80;

        # Make site accessible from http://192.168.0.30
        server_name 192.168.0.30;

        include /etc/nginx/web.d/*.conf;
}

- Désactiver les sites actifs dans /etc/nginx/sites-enabled
rm /etc/nginx/sites-enabled/*

- Activer le site base.conf dans /etc/nginx/sites-enabled
cd /etc/nginx/sites-enabled/
ln -s ../sites-avaiable/base.conf ./

La configuration de nginx est maintenant prête.
Pour chacune des applications à mettre derrière le proxy, il faudra fournir 2 fichiers (ou voir la note 6 plus bas):

- un à mettre dans le répertoire web.d. Il doit contenir une section location /<monapp> {}
Pour genconfig par exemple le fichier /etc/nginx/web.d/genconfig.conf contient:

location /genconfig {
    root /usr/share/eole/flask;
    try_files $uri/ @eoleflask;

    ## URI with trailing /, try the index.html
    location ~ /$ {
        try_files $uri @eoleflask;
        # index.html est maintenant un template (ref #6461)
        # try_files $uri $uri/static/index.html;
    }
    # Static files for every applications
    location ~ /static/ {
        alias /usr/share/eole/flask/$uri;
        expires 1d;
    }

}
location @eoleflask {
    proxy_pass http://eoleflask;
}

- un à mettre dans le répertoire upstream.d.
Pour genconfig par exmple, le fichier /etc/nginx/upstream.d/genconfig.conf contient:
upstream eoleflask{
    server 127.0.0.1:5000;
}

- Vérifier la configuration de nginx:
nginx -t

Doit répondre:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Petite note:
L'application que l'on met derrière le reverse proxy doit pouvoir être déployée dans un sous-répetoire. Ce n'est pas possible avec toutes les applications.

Prenons le cas de jenkins:
- Il faut ajouter une options --prefix=/<subdir> aux options de démarrage.
- Il faut dans le fichier web.d/jenkins.conf adapter la directive proxy_pass

proxy_pass http://jenkins/<subdir>

- le fichier upstream.d/jenkins.conf contient seulement:
upstream jenkins{
    server 127.0.0.1:8080;
}

#4 Mis à jour par Laurent Flori il y a plus de 7 ans

Pour avoir la même configuration en https, changer le contenu du fichier /etc/nginx/sites-available/base.conf:

server {
    listen 80;
    server_name 192.168.0.24;
    # enforce https
    return 301 https://$server_name$request_uri;
}

server {
        listen   443 ssl; ## listen for ipv4; this line is default and implied

        ssl_certificate /etc/ssl/certs/eole.crt;
        ssl_certificate_key /etc/ssl/certs/eole.key;
        ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;
        #ssl_dhparam /etc/ssl/private/dhparams.pem;

        # Make site accessible from http://192.168.0.24/
        server_name 192.168.0.24;

        include /etc/nginx/web.d/*.conf;
}

Note: on peut enlever la redirection http -> https si on veut;

#5 Mis à jour par Laurent Flori il y a plus de 7 ans

  • Sujet changé de Avoir genconfig et au moins une autre application en mode conteneur derrière un reverse proxy unique sur le port 80 à Avoir genconfig et au moins une autre application en mode conteneur derrière un reverse proxy unique sur le port 80 et sur le port 443

#6 Mis à jour par Laurent Flori il y a plus de 7 ans

On peut aussi s'abstraire du répertoire upstream.d si l'on remplace dans le fichier contenu dans web.d la valeur de la variable proxy_pass par la valeur de la variable server du fichier upstream.d.
Pour genconfig par exemple le fichier web.d/genconfig.conf

location /genconfig {
    root /usr/share/eole/flask;
    try_files $uri/ @eoleflask;

    ## URI with trailing /, try the index.html
    location ~ /$ {
        try_files $uri @eoleflask;
        # index.html est maintenant un template (ref #6461)
        # try_files $uri $uri/static/index.html;
    }
    # Static files for every applications
    location ~ /static/ {
        alias /usr/share/eole/flask/$uri;
        expires 1d;
    }

}
location @eoleflask {
    proxy_pass http://127.0.0.1:5000;
}

On peut du coup se passer du fichier upstream.d/genconfig.conf

#7 Mis à jour par Daniel Dehennin il y a plus de 7 ans

  • Statut changé de En cours à Fermé
  • Restant à faire (heures) changé de 0.5 à 0.0

Formats disponibles : Atom PDF