Nginx redirige vers www

Encore un problème de redirection nginx. J’ai besoin que mon site soit accessible uniquement via https et toujours avec le sous-domaine www (ou app ou api). La configuration suivante accepte-t-elle https://example.com (sans www)? Parce que c’est ce que je vois maintenant, sans pouvoir expliquer pourquoi … J’ajoute simplement qu’il n’y a pas d’autre section de serveur sur la configuration de nginx.

server { listen 80; server_name ~^(?www|app|api)\.example\.com$; index index.html index.htm; return 301 https://$subdomain.example.com$request_uri; } server { listen 443 ssl; server_name ~^(?www|app|api)\.example\.com$; root /var/www/html/pathToMyWebsite; index index.php; } 

Edit: Voici ce que j’ai fini par utiliser grâce à @ivan:

 # Redirects http://example.com & https://example.com to https://www.example.com server { listen 80; listen 443 ssl; # Here is the sortingck - listen both 80 & 443. # other ssl related stuff but without "ssl on;" line. server_name example.com; return 301 https://www.example.com$request_uri; } server { listen 80; server_name ~^(?www|app|api)\.example\.com$; index index.html index.htm; return 301 https://$subdomain.example.com$request_uri; } server { listen 443 default_server ssl; server_name ~^(?www|app|api)\.example\.com$; root /var/www/html/pathToMyWebsite; index index.php; } 

remarquez le “default_server” que j’ai ajouté sur listen 443 default_server ssl;

Tout d’abord, utiliser regexp dans la configuration nginx n’est généralement pas une bonne solution. Presque toujours, il est plus raisonnable de copier et coller des blocs de configuration ou d’utiliser include instructions include car regexp introduit une complexité redondante. Bien sûr, c’est une sorte de compromis sur ce qu’il faut utiliser.

Cependant, j’ai le même modèle d’utilisation dans mes configs:

 # Redirects http://example.com & https://example.com to https://www.example.com server { listen 80; listen 443 ssl; # Here is the sortingck - listen both 80 & 443. # other ssl related stuff but without "ssl on;" line. server_name example.com; return 301 https://www.example.com$request_uri; } # Redirects http://*.example.com to https://*.example.com server { listen 80; server_name ~^.+\.example\.com$; return 301 https://$host$request_uri; } server { listen 443; server_name ~^.+\.example\.com$; ssl on; # ... }