NGINX не видит папку с файлами на сервере
Прежде всего хочу сказать, что я новичок в nginx. Настраиваю веб-приложение. NGINX не видит файлы, которые находятся в папке resources. Сервер состоит из 5 контейнеров докер. Фронт, бек, постгрес, nginx и сертбот.
При создании записи изображение из контейнера backend копируется на основной сервер в папку resources. Откуда я хочу обрабатывать их на nginx.
docker-compsoe.yml
version: '3.3'
services:
db:
image: postgres:13.0-alpine
ports:
- 5432:5432
volumes:
- ./postgres_data:/var/lib/postgresql/data/
restart: always
env_file:
- ./.1env
networks:
- nginx_net
backend:
image: hinek/astsmarttime:main
restart: always
ports:
- "8000:8000"
volumes:
- ./resources:/app/resources/
env_file:
- ./.1env
networks:
- nginx_net
nextjs:
image: hinek/astsmarttimefront:main
restart: unless-stopped
depends_on:
- backend
networks:
- nginx_net
env_file:
- ./.env
nginx:
image: nginx:latest
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro
- ./certbot/www:/var/www/certbot
- ./certbot/conf/:/etc/letsencrypt
- ./resources:/etc/nginx/html/
depends_on:
- nextjs
- backend
networks:
- nginx_net
certbot:
image: certbot/certbot:latest
restart: unless-stopped
volumes:
- ./certbot/www/:/var/www/certbot
- ./certbot/conf/:/etc/letsencrypt
networks:
- nginx_net
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
networks:
nginx_net:
name: nginx_net
volumes:
postgres_data:
frontend:
resources:
nginx.conf
upstream backend_upstream {
server backend:8000;
}
upstream nextjs_upstream {
server nextjs:3000;
}
server {
listen 80;
server_tokens off;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 default_server ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /etc/letsencrypt/live/i-line.kz-0001/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/i-line.kz-0001/privkey.pem;
server_tokens off;
gzip on;
gzip_proxied any;
gzip_comp_level 4;
gzip_types text/css application/javascript image/svg+xml;
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 /_next/static {
proxy_pass http://nextjs_upstream;
add_header X-Cache-Status $upstream_cache_status;
}
location /static {
proxy_ignore_headers Cache-Control;
proxy_cache_valid 60m;
proxy_pass http://nextjs_upstream;
add_header X-Cache-Status $upstream_cache_status;
}
location /resources/ {
alias /resources/;
proxy_hide_header Content-Type;
add_header Content-Type image/jpg;
}
location / {
proxy_pass http://nextjs_upstream;
}
location /api {
rewrite /api/(.*) /$1 break;
proxy_pass http://backend_upstream;
}
}
При создании записи в БД изображение успешно появляется на сервере в папке resources. Но при запросе через фронт получаю ошибку 404. Лог ошибки nginx
root-nginx-1 | 2023/05/22 11:00:52 [error] 21#21: *1 open() "/resources/Logo_3hVK350.jpg" failed (2: No such file or directory) request: "GET /resources/Logo_3hVK350.jpg HTTP/2.0",
root-nginx-1 | - [22/May/2023:11:00:52 +0000] "GET /resources/Logo_3hVK350.jpg HTTP/2.0" 404 "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1" "-"
Понимаю, что скорее всего проблема в конфиге nginx, но не могу понять, как это исправить. Прошу помощи