# Настройка Nginx для работы с бэкендом и фронтендом ## Проблема В текущей конфигурации nginx проксирует только фронтенд (порт 3000), но не проксирует API запросы на бэкенд. Из-за этого изображения не загружаются, так как запросы к `/api/v1/files/*` не доходят до бэкенда. ## Решение Нужно добавить location для `/api` в конфигурацию nginx. ## Обновленная конфигурация nginx ```nginx server { listen 443 ssl; server_name app.mylocaldomain.online; ssl_certificate /etc/nginx/ssl/mylocaldomain.online.crt; ssl_certificate_key /etc/nginx/ssl/mylocaldomain.online.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # ВАЖНО: location /api должен быть ПЕРЕД location /, # так как nginx выбирает наиболее специфичное совпадение # Проксирование API запросов на бэкенд (включая /api/v1/files/* для изображений) location /api { # Укажите IP и порт вашего бэкенда # Если бэкенд на том же сервере: proxy_pass http://127.0.0.1:443; # Или если бэкенд на другом сервере (например, 10.15.5.113:443): # proxy_pass http://10.15.5.113:443; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; # Важно для работы с большими файлами (изображениями) proxy_read_timeout 36000s; proxy_connect_timeout 60s; proxy_send_timeout 36000s; proxy_buffering off; # Отключаем буферизацию для потоковой передачи файлов # Важно для работы с WebSocket (если используется) proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # Увеличиваем размер буферов для больших файлов proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; } # Проксирование всех остальных запросов на фронтенд (React/Vite) location / { proxy_pass http://10.15.5.252:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_read_timeout 36000s; proxy_buffers 16 4k; proxy_buffer_size 2k; # Важно для работы с WebSocket proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } ``` ## Шаги для применения 1. Отредактируйте конфигурацию nginx: ```bash sudo nano /etc/nginx/sites-available/app.mylocaldomain.online # или sudo nano /etc/nginx/conf.d/app.mylocaldomain.online.conf ``` 2. Добавьте location `/api` ПЕРЕД location `/` (порядок важен!) 3. Укажите правильный IP и порт бэкенда в `proxy_pass` для location `/api` 4. Проверьте конфигурацию: ```bash sudo nginx -t ``` 5. Перезагрузите nginx: ```bash sudo systemctl reload nginx # или sudo service nginx reload ``` ## Проверка работы После применения конфигурации проверьте: 1. API должен быть доступен: `https://app.mylocaldomain.online/api/v1/products` 2. Изображения должны загружаться: `https://app.mylocaldomain.online/api/v1/files/...` 3. В логах nginx должны появиться запросы к `/api/v1/files/*` ## Отладка Если изображения все еще не загружаются: 1. Проверьте логи nginx: ```bash sudo tail -f /var/log/nginx/access.log sudo tail -f /var/log/nginx/error.log ``` 2. Проверьте логи бэкенда - должны быть запросы к `/api/v1/files/*` 3. Проверьте, что бэкенд запущен и слушает на указанном порту: ```bash netstat -tlnp | grep :443 # или ss -tlnp | grep :443 ``` 4. Проверьте доступность бэкенда напрямую (если возможно): ```bash curl -k https://127.0.0.1:443/api/v1/products ```