# Настройки воркеров и событий (можно оставить по умолчанию для начала) worker_processes auto; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; # Настройки логов (пути внутри контейнера Nginx) access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; # Настройки отправки файлов и keepalive sendfile on; keepalive_timeout 65; # Сжатие (опционально, но рекомендуется) gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml; # Увеличиваем максимальный размер тела запроса (например, для загрузки файлов) client_max_body_size 50m; # Установите подходящее значение # Определяем upstream серверы для проксирования # Используем имена сервисов из docker-compose.yml upstream fastapi_backend { # Используем имя сервиса и его внутренний порт server fastapi:8000; } upstream frontend_app { # Используем имя сервиса и его внутренний порт server frontend:3000; } upstream php_backend { # Apache внутри php контейнера слушает порт 80 server php:80; } # Основной сервер, слушающий порт 80 server { listen 80; server_name localhost yourdomain.com; # Замените на ваш домен или оставьте localhost # Проксируем запросы к API на бэкенд FastAPI location /api/ { proxy_pass http://fastapi_backend/api/; # Обратите внимание на слэш в конце 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_read_timeout 300s; # Увеличить таймаут для долгих запросов (опционально) proxy_connect_timeout 75s; } # Проксируем запросы к PHP скрипту (например, /php/service.php) location /php/service.php { # Вы можете выбрать другой префикс proxy_pass http://php_backend/service.php; # Проксируем на корень Apache внутри PHP контейнера # Если ваш PHP скрипт лежит глубже, настройте путь соответственно # Например, если скрипт в /script.php, то location /my-php-script { proxy_pass http://php_backend/script.php; } 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; } # Проксирование запросов к MinIO для изображений location ~ ^/dressedforsuccess/ { proxy_pass http://45.129.128.113:9000; proxy_http_version 1.1; proxy_set_header Host 45.129.128.113:9000; 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 Connection ""; proxy_buffering off; proxy_request_buffering off; proxy_read_timeout 300s; proxy_connect_timeout 75s; proxy_send_timeout 300s; # Добавляем заголовки CORS для изображений add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET, OPTIONS'; add_header Access-Control-Allow-Headers 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; add_header Access-Control-Expose-Headers 'Content-Length,Content-Range'; } # Обработка запросов Next.js Image Optimization API location /_next/image { proxy_pass http://frontend_app; proxy_http_version 1.1; 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_set_header X-Forwarded-Port $server_port; proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; proxy_read_timeout 300s; proxy_connect_timeout 75s; } # Все остальные запросы проксируем на фронтенд Next.js location / { proxy_pass http://frontend_app; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; # Для поддержки WebSocket (если используется Next.js) proxy_set_header Connection "upgrade"; 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_cache_bypass $http_upgrade; } # Обработка ошибок (опционально) error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; # Стандартная папка Nginx } } # Если вы настраиваете HTTPS, добавьте здесь еще один server блок для порта 443 # server { # listen 443 ssl http2; # server_name yourdomain.com; # # ssl_certificate /etc/nginx/certs/yourdomain.com.crt; # Путь к сертификату внутри контейнера # ssl_certificate_key /etc/nginx/certs/yourdomain.com.key; # Путь к ключу # # # ... остальные настройки SSL ... # # # ... те же location блоки, что и для порта 80 ... # } }