Если я правильно понимаю вашу проблему, вы хотите использовать nginx на хосте в качестве прокси-сервера для перенаправления трафика c в контейнер docker.
Расширьте свой nginx .conf на хосте:
http {
...
# redirect http to https from your domain
server {
listen 80;
server_name localhost, <your domain>, <secondary domain>;
return 301 https://<your domain>$request_uri;
}
# simple reverse-proxy
server {
listen 443;
server_name localhost, <your domain>, <secondary domain>;
ssl on;
# if you use let's encrypt (certbot) /etc/letsencrypt/live/<your domain>/fullchain.pem
ssl_certificate <path to certificate>;
# if you use let's encrypt (certbot) /etc/letsencrypt/live/<your domain>/privkey.pem
ssl_certificate_key <path to key>;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # don’t use SSLv3 ref: POODLE
client_max_body_size 200M;
# pass requests for dynamic content to rails/turbogears/zope, et al
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forward-Proto http;
proxy_set_header X-Nginx-Proxy true;
proxy_redirect off;
}
}
...
}
На Ваш второй вопрос, да, вы можете использовать Let's Encrypt для получения сертификата. Либо отдельно, либо с плагином nginx.
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install python-certbot-nginx
Получите сертификат без плагина nginx (сначала необходимо остановить nginx, потому что certbot использует порт 80)
$ sudo certbot certonly --standalone -d <your domain> -d <secondary domain>
Получите сертификат с помощью nginx plugin
$ sudo certbot --nginx -d <your domain> -d <secondary domain>
В любом случае вам необходимо перезагрузить nginx после получения или возобновления сертификата:
$ sudo service nginx reload