Project

General

Profile

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

Added by Laurent Flori almost 5 years ago. Updated over 4 years ago.

Status:
Fermé
Priority:
Normal
Assigned To:
Start date:
12/19/2016
Due date:
% Done:

80%

Estimated time:
4.00 h
Spent time:
Remaining (hours):
0.0

History

#1 Updated by Laurent Flori almost 5 years ago

  • Status changed from Nouveau to En cours

#2 Updated by Laurent Flori almost 5 years ago

  • % Done changed from 0 to 80
  • Remaining (hours) changed from 4.0 to 0.5

#3 Updated by Laurent Flori almost 5 years ago

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 Updated by Laurent Flori almost 5 years ago

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 Updated by Laurent Flori almost 5 years ago

  • Subject changed from Avoir genconfig et au moins une autre application en mode conteneur derrière un reverse proxy unique sur le port 80 to 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 Updated by Laurent Flori almost 5 years ago

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 Updated by Daniel Dehennin over 4 years ago

  • Status changed from En cours to Fermé
  • Remaining (hours) changed from 0.5 to 0.0

Also available in: Atom PDF