Я пытаюсь настроить приложение Dockerised Mern, защищенное с помощью ssl. До сих пор мне удалось обслужить свое приложение для реагирования через контейнер nginx, но теперь у меня проблемы с моим серверным интерфейсом api.
, если моя веб-страница отправляет запрос https в мой nginx контейнер, как я могу взять этот запрос, понизить его до http, отправить в контейнер api и безопасно вернуть ответ? это даже предпочтительный подход?
my Nginx conf
server {
listen 80;
server_name example.com;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name example.com;
root /var/www/html/build;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
index index.html
try_files $uri $uri/ @backend;
}
location /login {
return 301 https://$host;
}
location @backend {
proxy_pass https://example.com;
}
my docker -compose.yml
version: '3.7'
services:
nginx:
image: nginx:1.15-alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./data/build:/var/www/html/build
- ./data/nginx:/etc/nginx/conf.d
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
certbot:
image: certbot/certbot
volumes:
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
backend:
container_name: backend
restart: unless-stopped
build: ./api
ports:
- '3001:3001'
env_file: ./api/.env
environment:
- NODE_ENV=production