web-dev-qa-db-fra.com

Nginx renvoie 400 sur les demandes HTTPS

J'ai mis en place Nginx avec Statsecrypt pour travailler avec HTTPS. Mon /etc/nginx/conf.d/app.conf est ce qui suit (aucune autre directive server est configurée):

server {

        location /.well-known/acme-challenge/ {
                autoindex on;
                root /var/www/certbot/;
        }

        location / {
                return 301 https://$Host$request_uri;
        }

        server_name example.com;
        listen 80;
}

server {
        listen 443;
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
        include /etc/letsencrypt/options-ssl-nginx.conf;
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

        server_name example.com;

        location /.well-known/acme-challenge/ {
                root /var/www/certbot;
        }

        location /static/ {
                gzip on;
                gzip_static on;
                gzip_types text/plain text/css text/javascript application/javascript;
                gzip_disable "msie6";

                alias /static/;
                autoindex off;
        }

        # many other locations
}

Quand j'essaie d'ouvrir https://example.com, Nginx retourne 400, ce sont les journaux:

mysite_nginx | 1.1.1.1 - - [04/Apr/2019:16:43:52 +0000] "\x16\x03\x01\x00\xC6\x01\x00\x00\xC2\x03\x03\x97\x08D\x08\x87\x5Cg\xDB\x85\x8Ch\x16\xC9\x1E\x01\xDB\x9F\x12\x04\x91e\xB3P]4]\xFE\xEF\xE5^\xB7\x07\x00\x00\x1C" 400 157 "-" "-" "-"
mysite_nginx | 1.1.1.1 - - [04/Apr/2019:16:43:52 +0000] "\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03s\xC0\xBDWM\xC4n\x12\xD6\x1BQ\xCF\x0C\xDD\x93\xE6\x8D\x1B5YV\xBB\x9D\xB9\x8A,\x02\xC1nS\xE1\x15 y." 400 157 "-" "-" "-"
mysite_nginx | 1.1.1.1 - - [04/Apr/2019:16:43:52 +0000] "\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03wa\x13\x96D\xCB)f\x9B\xED\x1B\xA9\xFD\xA8\xCAU\x1A\xDA\xA0" 400 157 "-" "-" "-"
mysite_nginx | 1.1.1.1 - - [04/Apr/2019:16:43:52 +0000] "\x16\x03\x01\x00\xC6\x01\x00\x00\xC2\x03\x03\x96]\xEC\x1F\x077\xCF\xE5N]k\x86\xCF\xEF\x13\xF0\xFC\xCBL\xFD\x06\xF5\x10|\xD8\x9C\xC0\xE7-\xD4(\xBF\x00\x00\x1C\xBA\xBA\xC0+\xC0/\xC0,\xC00\xCC\xA9\xCC\xA8\xC0\x13\xC0\x14\x00\x9C\x00\x9D\x00/\x005\x00" 400 157 "-" "-" "-"

J'ai fait des recherches et j'ai constaté que cela pourrait se produire si la demande HTTPS est faite au point de terminaison HTTP, mais je ne peux pas comprendre ce qui ne va pas avec ma configuration. Comment le réparer?

[~ # ~] upd [~ # ~ ~] nginx fonctionne à l'intérieur du conteneur Docker, docker-compose.yml est de la version 2.4, nginx service de service:

nginx:
    image: nginx:1.15.9-Alpine
    volumes:
      - ./configs/nginx:/etc/nginx/conf.d
      - ./configs/nginx.proxy_params:/etc/nginx/proxy_params
      - ./volumes/certbot/conf:/etc/letsencrypt
      - ./volumes/certbot/www:/var/www/certbot
    command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
    ports:
      - "80:80"
      - "443:443"
    restart: on-failure

options-ssl-nginx.conf et ssl-dhparams.pem sont extraits de l'officiel certbot repo.

J'ai vérifié que les fichiers fullchain.pem et privacy.pem existe dans /etc/letsencrypt/live/example.com.

7
Nikrom

Vous devez activer SSL sur le port 443. Voir Ce document pour plus de détails.

Par exemple:

listen 443 ssl;
2
Richard Smith