web-dev-qa-db-fra.com

Comment un serveur virtuel nginx unique peut-il gérer les ports 80 et 443?

J'ai un fichier de configuration avec une configuration de serveur virtuel, cela fonctionne sur le port 443 pour ssl. Je voudrais également que ce même serveur virtuel gère le trafic non SSL sur le port 80.

J'espérais faire ce qui suit, mais cela ne semble pas fonctionner.

server {
    listen 443 ssl;
    listen 80;
    server_name example.com;
    ...
}

Il semble que les options SSL en dessous de ces paramètres causent des problèmes pour le trafic non SSL.

19
ArthurGuy

Retirer ssl on; directive.

ssl flag dans la directive listen est exactement ce dont vous avez besoin.

Voir http://nginx.org/en/docs/http/configuring_https_servers.html#single_http_https_server

16
Alexey Ten

Oui bien sûr.

server {
  listen 80;
  listen 443 ssl;
  # force https-redirects
  if ($scheme = http) {
    return 301 https://$server_name$request_uri;
  }
}

Voici mon article, nommé " Configuration Nginx pour HTTPS " qui contient plus d'informations.

19
Haimei