web-dev-qa-db-fra.com

SSL Nginx dans un conteneur Docker

J'ai configuré un conteneur Docker pour exécuter Nginx et configurer le fichier/etc/nginx/sites-available/default comme indiqué ci-dessous

server 
{
 listen 80 default_server;
 listen [::]:80 default_server ipv6only=on;

 root /usr/share/nginx/html;
 index index.php index.html index.htm;

 server_name example.com;

 location / {
            try_files $uri $uri/ /index.html;
    }

    error_page 404 /404.html;

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
          root /usr/share/nginx/html;
    }


    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;   
        include fastcgi_params;
 }

}

server 
{
 listen 443;

 root /usr/share/nginx/html;
 index index.php index.html index.htm;

 server_name example.com;

 ssl    on;
 ssl_certificate    /etc/ssl/certs/ssl-cert-snakeoil.pem;
 ssl_certificate_key    /etc/ssl/private/ssl-cert-snakeoil.key;


 location / {
            try_files $uri $uri/ /index.html;
    }

    error_page 404 /404.html;

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
          root /usr/share/nginx/html;
    }


location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;   
        include fastcgi_params;
 }


}

Je mappe les dossiers/etc/ssl/certs &/etc/ssl/private sur l'hôte lorsque j'exécute le conteneur Docker

docker run -dt -p 8080:443 -p 8081:80 -v /t-base/log:/var/log/nginx -v
/etc/ssl/certs:/etc/ssl/certs -v /etc/ssl/private:/etc/ssl/private nginx

Docker ps shows

Up n minutes 0.0.0.0:8081->80/tcp 0.0.0.0:8080->443/tcp <container-name>

et le fichier journal des erreurs nginx dans le dossier mappé/t-base/log reste vide.

docker exec -it <container-name> /bin/bash

suivi par

service nginx status

revient et dit que nginx est en cours d'exécution.

Tout ce qui précède indiquerait que tout fonctionne correctement. Cependant, je trouve que même si je suis en mesure de naviguer vers

http://example.com:8080

tourne la page par défaut

https://example.com:8081

a la Chrome me montrant sa page d'erreur par défaut "smiley triste". Je ne vois pas ce que je fais mal ici. J'apprécierais beaucoup toute aide.

23
DroidOS

Vous avez échangé les ports. Selon cette ligne de commande -p 8080:443 -p 8081:80, tu devrais faire:

https://example.com:8080 notez qu'il s'agit de http s

et

http://example.com:8081

Cela devrait fonctionner

14
vanthome