gracias y sorry por tantas preguntas, pero aun no lo tengo todo claro....
cree una maquina en aws ec2 con ubuntu 20.04, levante un contenedor ahí y le metí la estructura de web de otro lado completa, con sus archivos, carpetas, virtualhost, site y cert, al entrar a la ip publica por el navegador "https" conecta al contenedor porque le indique los puertos el memento de correr el docker run, osea hasta ahí esta todo OK
Luego arme para levantar una segunda web que trabaja en el mismo puerto y que también es https e hice lo mismo, en el dockerfile indique todo para mover toda su estructura actual (archivos, carpetas, site, cert, etc), una vez creada la imagen y querer levantar el contenedor tuve el problema porque no podía levantar 2 contenedores con los mismos puertos y surgió la búsqueda el proxy-reverso con nginx.
como ya tengo los certificados, descarte las opciones de instalación del nginx con letsencrypt y pensaba manejar los certificados internamente en los contenedores (sitios web apache2) en sus archivos de virtualhost (no se si sera la mejor opción), teniendo eso pensado solo tendría que levantar un contenedor y seria el de nginx como proxy-reverso mas los "x" contenedores con sus web... para eso ya utilice "docker-compose" y arma el archivo .yml:
***Para empezar solo estoy probando con 1 web y ver si pasa al https, utilizo el Dockerfile que tengo en esa carpeta
web01:
build: web01
expose:
- "80"
environment:
VIRTUAL_HOST: web01.dominio.cl
restart: always
nginx-proxy:
image: jwilder/nginx-proxy
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
# - /var/www/html/web01/SSL:/etc/nginx/certs:rw (esta linea se la deje comentada ya que usaría el cert dentro del contenedor de los web)
restart: always
privileged: true
Despues hago un:
# docker-compose build
# docker-compose up -d
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ed5c5030f89c html_web01 "docker-php-entrypoi…" 19 seconds ago Up 17 seconds 80/tcp html_web01_1
e87a6f735592 jwilder/nginx-proxy "/app/docker-entrypo…" 19 seconds ago Up 17 seconds 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp html_nginx-proxy_1
***Nose porque le pone el nombre de "html_web01_1" al contenedor... no sera ese el problema que quizas no lo encuentra para pasarle la peticion?
Cuando entro al contenedor de nginx y entro al archivo de configuración (/etc/nginx/conf.d/default.conf) veo que armo la estructura de virtualhost con el nombres de web01 al final del archivo:
# web01.dominio.cl
upstream web01.dominio.cl {
## Can be connected with "bridge" network
# html_web01_1
server 172.17.0.2:80;
}
server {
server_name web01.dominio.cl;
listen 80 ;
access_log /var/log/nginx/access.log vhost;
location / {
proxy_pass http://web01.dominio.cl;
}
}
Pero al ingresar a
https://web01.dominio.cl no carga... tengo mi archivo local "/etc/hosts" tal cual como me cargaba cuando estaba sin el contenedor nginx.
Estará bien mi archivo docker-compose.yml ?? en el web01 indicarle solo el "80" ? no es necesario crear una docker network??
Lo otro es que si trato ver los log de /var/log/nginx/access.log no me muestra nada y si entro me dice ""/var/log/nginx/access.log" is not a normal file" ... y no puedo ver lo que esta haciendo o no haciendo por detrás el proxy.. si el fallo esta en que no la envía la petición al contenedor o si la envía quizás el contenedor no levanta la web?
EDIT:
Deberia haber un problema con los certificados....
Si desde mi notebook hago un:
# curl
http://web01.dominio.cl
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="
https://web01.dominio.cl/">here</a>.</p>
<hr>
<address>Apache/2.4.38 (Debian) Server at web01.dominio.cl Port 80</address>
</body></html>
# curl
https://web01.dominio.cl
curl: (35) OpenSSL SSL_connect: Conexión reinicializada por la máquina remota in connection to web01.dominio.cl:443
Si hago lo mismo en la maquina host donde están los contenedores:
# curl
http://web01.dominio.cl
<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.19.3</center>
</body>
</html>
# curl
https://web01.dominio.cl
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here:
https://curl.haxx.se/docs/sslcerts.html
curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.