serveurs:installation:web-srv:geonature-atlas-nginx

Configurer Nginx pour GeoNature Atlas

  • Notes : nous voulons une adresse web principal de type <alias>.<domaine-sinp> pour l'Atlas. L'adress atlas.<domaine-sinp> doit être redirigé vers <alias>.<domaine-sinp>.
  • Créer un fichier de config Nginx pour l'Atlas : vi /etc/nginx/sites-available/atlas.conf
  • Y placer le contenu suivant :
    server {
        listen 80; 
        listen [::]:80;
     
        server_name <alias>.<domaine-sinp>;
     
        location / { 
            proxy_set_header X-Forwarded-Host $host:$server_port;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
     
            proxy_pass http://127.0.0.1:8080/;# ATTENTION : bien mettre un slash final ! Sinon => erreur 404
        }
    }
  • Créer un lien depuis les sites actifs : cd /etc/nginx/sites-enabled/ ; ln -s ../sites-available/atlas.conf atlas.conf
  • Tester la config et relancer Nginx si OK : nginx -t && nginx -s reload
  • Tester l'URL http://<alias>.<domaine-sinp>/ qui doit afficher une erreur 502 si le serveur Gunicorn de l'Atlas n'est pas lancé.
    • Vérifier le service : systemctl status geonature-atlas.service
    • Démarrer le service Atlas : systemctl start geonature-atlas.service
    • Arrêter le service Atlas : systemctl stop geonature-atlas.service
  • Installer un certificat SSL via Certbot (Letsencrypt) : certbot --nginx -d <alias>.<domaine-sinp> -d atlas.<domaine-sinp>
    • Ex. SINP PACA : certbot --nginx -d nature.silene.eu -d atlas.silene.eu
    • Ex. SINP AURA :
      certbot --nginx \
          -d atlas.biodiversite-auvergne-rhone-alpes.fr \
          -d atlas.biodiversite-auvergne-rhone-alpes.com \
          -d atlas.biodiversite-auvergne-rhone-alpes.eu \
          -d atlas.biodiversite-auvergne-rhone-alpes.net \
          -d atlas.biodiversite-auvergne-rhone-alpes.org \
          -d atlas.biodiversite-aura.com \
          -d atlas.biodiversite-aura.eu \
          -d atlas.biodiversite-aura.fr \
          -d atlas.biodiversite-aura.net \
          -d atlas.biodiversite-aura.org \
          -d atlas.observatoire-biodiversite-auvergne-rhone-alpes.com \
          -d atlas.observatoire-biodiversite-auvergne-rhone-alpes.eu \
          -d atlas.observatoire-biodiversite-auvergne-rhone-alpes.fr \
          -d atlas.observatoire-biodiversite-auvergne-rhone-alpes.net \
          -d atlas.observatoire-biodiversite-auvergne-rhone-alpes.org
    • Répondre : 2
    • Tester ensuite la redirection auto de HTTP vers HTTPS : http://<alias>.<domaine-sinp>/ → doit redirigé vers HTTPS automatiquement
  • Tester la configuration SSL : https://www.ssllabs.com/ssltest/analyze.html?d=<alias>.<domaine-sinp>
  • Tester l'URL https://<alias>.<domaine-sinp>/
  • La config finale :
    server {
        listen 443 ssl http2; # managed by Certbot
        listen [::]:443 ssl http2; # managed by Certbot
        server_name <prefixe-non-atlas>.<domaine-sinp>;
     
        auth_basic "Zone restreinte";
        auth_basic_user_file /etc/nginx/.htpasswd;
     
        location / {
            proxy_set_header X-Forwarded-Host $host:$server_port;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
     
            # WARNING: up timeout to 90s to avoid 502 Bad Gateway response
            # Set timeout like Gunicorn in GeoNature-Atlas atlas/configuration/settings.ini file
            proxy_read_timeout 90s;
            proxy_connect_timeout 30s;
            proxy_pass http://127.0.0.1:8080/;# ATTENTION : bien mettre un slash final ! Sinon => erreur 404
        }
     
        ssl_certificate /etc/letsencrypt/live/<prefixe-non-atlas>.<domaine-sinp>/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/<prefixe-non-atlas>.<domaine-sinp>/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    }
     
    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name atlas.<domaine-sinp>;
     
        ssl_certificate /etc/letsencrypt/live/<prefixe-non-atlas>.<domaine-sinp>/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/<prefixe-non-atlas>.<domaine-sinp>/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
     
        return 302 https://<prefixe-non-atlas>.<domaine-sinp>$request_uri;
    }
     
    server {
        listen 80;
        listen [::]:80;
        server_name <prefixe-non-atlas>.<domaine-sinp> atlas.<domaine-sinp>;
        return 302 https://<prefixe-non-atlas>.<domaine-sinp>$request_uri;
    }
  • Penser à modifier le fichier config.py pour y indiquer la nouvelle URL en HTTPS : vi ~/www/atlas/atlas/configuration/config.py
  • serveurs/installation/web-srv/geonature-atlas-nginx.txt
  • Dernière modification : 2023/12/05 14:51
  • de jpmilcent