NGINX Статические файлы через Https?

У меня есть следующая настройка docker-compose, которая работает для отображения изображений при развертывании локально и без https:

NGINX:

events{

}

http{

    server {
        listen 80;
        server_name localhost;
        root /usr/share/nginx/html;

            location / {
                proxy_pass http://frontend:3000;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "";
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
            }
    }
}

docker-compose:

  frontend:
    build: 
      context: ../../
    restart: always
    volumes:
      - '../../:/app'
      - '/app/node_modules'
    ports: 
      - "3000:3000"
    depends_on:
      - "backend"
    environment:
      - CHOKIDAR_USEPOLLING=true
    stdin_open: true
    tty: true
  nginx:
    build:
      context: ../../nginx
    restart: always
    ports:
      - "80:80"
      - "443:443" 
    volumes:
      - volume1:/usr/share/nginx/html
    links:
      - "backend"
      - "db"
      - "frontend"

frontend:

      <img
        onError={()=>{
          console.log("inside the onError function")
          setImgError(true)
        }}
        src={"http://localhost:9000/static/"+comment.file_name} 
        className='commentimage'
      />

Это не работает при использовании https. То есть, / и /api/ работают как ожидалось, но не /images/.

events{

}

http{

    server {
        listen 80;
        server_name localhost lightchan.org www.lightchan.org;
        root /usr/share/nginx/html;
    
       location /.well-known/acme-challenge/ {
        root /var/www/certbot;
           }
        
       return 301 https://lightchan.org$request_uri;
    }

   server {
        listen 443 default_server ssl http2;
        listen [::]:443 ssl http2;
        server_name localhost lightchan.org www.lightchan.org;
        #ssl_certificate /etc/nginx/ssl/live/lightchan.org/fullchain.pem;
        #ssl_certificate_key /etc/nginx/ssl/live/lightchan.org/privkey.pem;
        ssl_certificate /etc/letsencrypt/live/lightchan.org/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/lightchan.org/privkey.pem;
           location / {
                proxy_pass http://frontend:3000;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
           }
           location ^~ /api/ {
                rewrite ^/api/(.*)$ /$1 break;
                proxy_pass http://backend:8000;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
           }
           location ^~ /images/ {
                rewrite ^/images/(.*)$ /$1 break;
                proxy_pass https://164.92.157.124/static/;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
           }
    }
}

Мой docker-compose:

 frontend:
    build: 
      context: ../../
    restart: always
    volumes:
      - '../../:/app'
      - '/app/node_modules'
    ports: 
      - "3000:3000"
    depends_on:
      - "backend"
    environment:
      - CHOKIDAR_USEPOLLING=true
    stdin_open: true
    tty: true
    links:
      - 'backend'
  nginx:
    build:
      context: ../../nginx
    restart: always
    ports:
      - "80:80"
      - "443:443" 
    volumes:
      - volume1:/usr/share/nginx/html
      - varwwwcertbot:/var/www/certbot
      - certbotconf:/etc/letsencrypt 
    links:
      - "backend"
      - "db"
      - "frontend"
  certbot:
    image: certbot/certbot:latest
    volumes:   
     - varwwwcertbot:/var/www/certbot
     - certbotconf:/etc/letsencrypt 

Мой фронтенд в этом случае я не знаю, как ссылаться. У меня есть

  <img
    onError={()=>{
      console.log("inside the onError function")
      setImgError(true)
    }}
    src={"https://nginx:80/images/"+comment.file_name} 
    className='commentimage'
  />

Что выглядит неправильно. Я docker exec вошел в запущенный контейнер nginx и дважды проверил, что изображение, которое я хочу отобразить, существует в каталоге static (что так и есть). Если я пытаюсь перейти в каталог <DNS>/state/<image.extension>, меня перенаправляет обратно через мое фронтенд-приложение. Я попытался заменить строку

proxy_pass https://164.92.157.124/static/;

с

proxy_pass https://backend:3000/static/;

  • но это будет проходить через мое приложение Django для статических файлов, а я хочу, чтобы NGINX обслуживал их просто как папку.

Есть идеи?

Вернуться на верх