Você precisa instalar certificados SSL no Nginx (seus clientes se comunicarão diretamente com ele) e também definir o servidor de 80 portas e redirecioná-lo para o 443. Aqui está uma configuração de exemplo para este tipo de configuração:
upstream APP {
server CONTAINER:PORT;
}
// Redirect 80 to 443
server {
listen 80 default_server;
server_name yourdomain.com;
return 301 https://www.yourdomain.com$request_uri;
}
server {
listen 443 ssl default_server;
server_name yourdomain.com;
ssl on;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
// Rest of your configuration is all up to your architecture
location / {
// more config...
proxy_pass APP;
// more config...
}
}
Eu não sei que tipo de aplicativos você tem em seus contêineres do Docker.
Por exemplo, se você tiver um aplicativo PHP. você pode usar o PHP-FPM & Remova completamente o Apache no meio. Nginx pode trabalhar com seu contêiner via fast-cgi. Pode haver centenas de configurações diferentes dependendo das suas necessidades & carga etc.
O Nginx é altamente (!) servidor web configurável + servidor proxy. Mas lembre-se se seus registros dns apontam para o endereço IP do Nginx, então você precisa instalar o SSL nele. & Se você contêineres não tem acesso da web, o que é uma boa prática de segurança, você não precisa criptografar o tráfego entre nginx & seus contêineres que você economiza energia da cpu
O nginx também possui uma poderosa funcionalidade de cache proxy / fastcgi, assim você pode armazenar em cache a saída do aplicativo (se eles não forem dinâmicos para cada solicitação, por exemplo, arquivos estáticos)
A partir de quarta-feira 25 de abril 14:57:24 2018 ssl on;
diretiva é obsoleta. Você pode apenas comentar. Detalhes: link