J'essaie d'exécuter SSL pour Docker en utilisant le domaine. J'utilise ce qui suit docker-compose.yml
pour mon projet:Docker SSL pour le domaine
web:
build: /Users/marcin/docker/definitions/php-nginx/php-7.1-ubuntu
volumes:
- /c/Users/marcin/docker/projects/newdocker.app/html/:/usr/share/nginx/html/
- /c/Users/marcin/docker/projects/newdocker.app/nginx/conf.d/:/etc/nginx/conf.d/
- /c/Users/marcin/docker/projects/newdocker.app/nginx/log/:/var/log/nginx/
- /c/Users/marcin/docker/projects/newdocker.app/php/config/:/usr/local/etc/php/
- /c/Users/marcin/docker/projects/newdocker.app/supervisor/conf.d/:/etc/supervisor/conf.d/
- /c/Users/marcin/docker/projects/newdocker.app/supervisor/log/:/var/log/supervisor/
- /c/Users/marcin/docker/local_share/:/root/.local_share/
working_dir: /usr/share/nginx/html/
links:
- db
container_name: newdocker.php
hostname: newdocker.app
ports:
- "280:22"
- "8300:80"
- "18300:443"
environment:
- VIRTUAL_HOST=newdocker.app
- VIRTUAL_PORT=443
- VIRTUAL_PROTO=https
db:
build: /Users/marcin/docker/definitions/mysql/5.7
environment:
- MYSQL_ROOT_PASSWORD=pass
- MYSQL_DATABASE=
- MYSQL_USER=
- MYSQL_PASSWORD=
expose:
- 3306
volumes:
- /c/Users/marcin/docker/projects/newdocker.app/mysql/data/:/var/lib/mysql/
- /c/Users/marcin/docker/projects/newdocker.app/mysql/conf.d/:/etc/mysql/conf.d/source
- /c/Users/marcin/docker/projects/newdocker.app/mysql/log/:/var/log/mysql/
ports:
- "33200:3306"
container_name: newdocker.db
hostname: newdocker.app
et j'utilise également jwilder/nginx-proxy
avec le fichier docker-compose.yml
suivant:
proxy:
image: jwilder/nginx-proxy
restart: always
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./nginx/conf.d/proxy.conf:/etc/nginx/conf.d/proxy.conf:ro
- ./certs/default.crt:/etc/nginx/certs/default.crt:ro
- ./certs/default.key:/etc/nginx/certs/default.key:ro
ports:
- "80:80"
- "443:443"
container_name: proxy
Et le problème est comme ceci:
http://192.168.99.100:8300/ - is working fine
https://192.168.99.100:18300/ - is working fine
https://192.168.99.100/ - I'm getting 503 (this is probably fine - this port is not used for this container)
http://newdocker.app/ - is working fine
https://newdocker.app:18300/ - is working fine
https://newdocker.app/ - I'm getting 500
mon fichier de configuration nginx ressemble à ceci:
server {
listen 80;
listen 443 default ssl;
server_name localhost;
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
# set maximum request size to 20M
client_max_body_size 20M;
root /usr/share/nginx/html/public/;
location/{
root /usr/share/nginx/html/public/;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args;
}
sendfile off;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html/public/;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param SERVER_NAME $host;
}
}
Comment est-ce que je peux placer ceci pour le faire fonctionner avec https://newdocker.app/
donc sans port?
généralement dans le bloc de serveur de configuration nginx vous séparez le port 80 du port 443 si vous souhaitez qu'il envoie le HTTP entrant à votre https de façon transparente ... si vous voulez ce comportement créer le bloc serveur pour 80 simplement envoyer la connexion à 443 ... alors la majeure partie de votre logique réside dans le bloc de serveur pour le port 443 ... ou pas? laisse savoir ... je peux poster un exemple concret ... suite à votre question oui l'url ne contient jamais de numéro de port mais la config fait acheminer le trafic vers votre serveur sous-jacent et son port en fonction du chemin url donné –
@ScottStensland Remerciements vous pour votre commentaire. Je voudrais utiliser le même schéma pour tous les types de sites, donc je voudrais travailler http et https sans aucune redirection. –
Dans votre configuration nginx avez-vous essayé de tout rediriger vers https/443? – Sergiu