Partage
  • Partager sur Facebook
  • Partager sur Twitter

1 LAN, 2 sous-domaines, 2 serveurs NGINX

    27 octobre 2024 à 15:28:35

    Bonjour à tous, 
    Je commence avec nginx.
    J'essaie d'avoir deux serveurs nginx dans mon réseau local. Un pour Odoo, un pour passbolt.  
    Comme ceci : 
    J'ai un serveur Odoo, avec un certificat Let's Encrypt qui fonctionne parfaitement. 
    odoo.domain.com, 192.168.1.159, redirection NAT, avec cette conf nginx : 
    #odoo server
    upstream odoo {
      server 127.0.0.1:8069;
    }
    upstream odoochat {
      server 127.0.0.1:8072;
    }
    map $http_upgrade $connection_upgrade {
      default upgrade;
      ''      close;
    }
    
    # http -> https
    server {
      listen 80;
      server_name odoo.domain.fr;
      rewrite ^(.*) https://$host$1 permanent;
    }
    
    server {
      listen 443 ssl;
      server_name odoo.domain.fr;
      proxy_read_timeout 720s;
      proxy_connect_timeout 720s;
      proxy_send_timeout 720s;
    
      # SSL parameters
      ssl_certificate /etc/letsencrypt/live/odoo.domain.fr/fullchain.pem;
      ssl_certificate_key /etc/letsencrypt/live/odoo.domain.fr/privkey.pem;
      ssl_session_timeout 30m;
      ssl_protocols TLSv1.2;
      ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
      ssl_prefer_server_ciphers off;
    
      # log
      access_log /var/log/nginx/odoo.access.log;
      error_log /var/log/nginx/odoo.error.log;
    
      # Redirect websocket requests to odoo gevent port
      location /websocket {
        proxy_pass http://odoochat;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
    
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
       }
    
      # Redirect requests to odoo backend server
      location / {
        # Add Headers for odoo proxy mode
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_redirect off;
        proxy_pass http://odoo;
    
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
      }
    
      # common gzip
      gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript;
      gzip on;
    }
    J'ai commencé à installer un serveur passbolt, et il a besoin d'un accès 443 https avec un certificat Let's Encrypt. Sur passbolt.domain.com, 192.168.1.160, si je modifie la redirection NAT vers l'IP du serveur passbolt dans le routeur, cela fonctionne parfaitement aussi.
    Avec cette conf de nginx : 
    #
    #  Passbolt.conf - Nginx configuration file to run the Passbolt software.
    #
    
    server {
    
      # Managed by Passbolt
      server_name passbolt.domain.fr;
    
      client_body_buffer_size     100K;
      client_header_buffer_size   1K;
      client_max_body_size        5M;
    
      client_body_timeout   10;
      client_header_timeout 10;
      keepalive_timeout     5 5;
      send_timeout          10;
    
      root /usr/share/php/passbolt/webroot;
      index index.php;
      error_log /var/log/nginx/passbolt-error.log info;
      access_log /var/log/nginx/passbolt-access.log;
    
      # Managed by Passbolt
      # include __PASSBOLT_SSL__
    
      location / {
        try_files $uri $uri/ /index.php?$args;
      }
    
      location ~ \.php$ {
        try_files                $uri =404;
        include                  fastcgi_params;
        fastcgi_pass             unix:/run/php/php8.3-fpm.sock;
        fastcgi_index            index.php;
        fastcgi_intercept_errors on;
        fastcgi_split_path_info  ^(.+\.php)(.+)$;
        fastcgi_param            SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param            SERVER_NAME $http_host;
        fastcgi_param PHP_VALUE  "upload_max_filesize=5M \n post_max_size=5M";
      }
    
    
        listen [::]:443 ssl ipv6only=on; # managed by Certbot
        listen 443 ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/passbolt.domain.fr/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/passbolt.domain.fr/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 {
        if ($host = passbolt.domain.fr) {
            return 301 https://$host$request_uri;
        } # managed by Certbot
    
    
    
      listen 80;
      listen [::]:80;
      server_name passbolt.domain.fr;
        return 404; # managed by Certbot
    
    }
    Je ne sais pas comment rediriger les requêtes pour « passbolt.domain.fr » vers l'autre serveur nginx. 
    Quel est le serveur nginx qui doit gérer le certificat pour le « passbolt.domain.fr » ? C'est celui de odoo ? 
    Quelqu'un peut-il m'aider ?
    J'ai essayé de rediriger avec un nouveau upstream sur le nginx Odoo, et de rediriger mais le certificat et l'erreur SSL se produisent toujours, ou le nginx Odoo a cessé de fonctionner. 
    Merci d'avance ! 
    Johan

    -
    Edité par JohanGeorges 27 octobre 2024 à 15:29:00

    • Partager sur Facebook
    • Partager sur Twitter

    1 LAN, 2 sous-domaines, 2 serveurs NGINX

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    • Editeur
    • Markdown