• Serveurs
  • Nginx HTTPS configuration multi domaine

Bonjour,

Je possède un kimsufi avec plusieurs domaines, des sites sont en HTTPS d'autres non.
Lorsque l'on va sur un HTTPS d'un site qui n'est pas configuré pour répondre en HTTPS, c'est un autre qui prend la main.
cat /etc/hosts

127.0.0.1	domain.tld example.org ...
IP_PUBLIC	domain.tld example.org ...
cat /etc/nginx/sites-enabled/domain.tld

server {
	listen 80;
	server_name www.domain.tld;

	root /var/www/domain.tld/src;

	access_log /var/www/domain.tld/logs/access.log;
	error_log /var/www/domain.tld/logs/error.log;

	...
}
cat /etc/nginx/sites-enabled/example.org

server {
        listen 80;
        listen [::]:80;
        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        if ($scheme = http) {
        	return 301 https://$server_name$request_uri;
        }

        server_name www.example.org;

        root /var/www/example.org/src/;

        access_log  /var/www/example.org/logs/access.log;
        error_log   /var/www/example.org/logs/error.log;

        ssl_certificate /etc/letsencrypt/live/example.org/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.org/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/example.org/fullchain.pem;

        ...
}

Aucun default_server n'est défini.
Est-ce que je dois jouer avec les ip dans le host pour définir une ip par site ?
Arrowbaz wrote:Est-ce que je dois jouer avec les ip dans le host pour définir une ip par site ?
Non tu ne peux pas faire ça car tu n'as probablement pas autant d'adresses IPv4 réservées que de sites.

Ce que je ferais c'est tout passer en HTTPS.

Et si vraiment tu tiens à rester en HTTP, faire une redirection avec un truc du style:
server {
	listen 443;
	server_name www.domain.tld;
        proxy_pass www.domain.tld;
}
Mais il faudra quand même un certificat car nginx n'accepte pas de block server qui écoute en 443 sans certificat je crois.
Je voulais dire faire des ip local type 127.0.0.x et mettre dans Nginx listen 127.0.0.x:80; car effectivement je n'ai qu'une seule ip. (je ne sais pas si c'est possible, mais apache pouvait gérer les vHost comme ça)

Effectivement je pourrais ajouter un certificat pour tous les sites, mais j'aimerai comprendre mon problème plutôt que de le contourner, c'est étrange que Nginx prenne un autre server block.

J'ai des sites qui répondent en
server_name *.domain.tld
Est-ce que ça pourrais jouer dans la cause du problème ?
Arrowbaz wrote:Je voulais dire faire des ip local type 127.0.0.x et mettre dans Nginx listen 127.0.0.x:80; car effectivement je n'ai qu'une seule ip. (je ne sais pas si c'est possible, mais apache pouvait gérer les vHost comme ça)
Perso je n'ai jamais fait ça (pour moi localhost c'est 127.0.0.1 et pas autre chose :noel🙂 donc je ne saurais te dire si ça fonctionnera.
Arrowbaz wrote:Effectivement je pourrais ajouter un certificat pour tous les sites, mais j'aimerai comprendre mon problème plutôt que de le contourner
C'est selon moi la meilleure solution, je ne vois plus l’intérêt d'utiliser du HTTP.
Arrowbaz wrote:c'est étrange que Nginx prenne un autre server block
J'ai des sites qui répondent en
server_name *.domain.tld
Est-ce que ça pourrais jouer dans la cause du problème ?
De mémoire, je crois que si nginx ne trouve pas le vhost exact et qu'il n'y a pas de vhost par défaut, il sert celui avec le premier nom dans l'ordre alphabétique.
Répondre…