dressed_for_succes_store/nginx/nginx.conf
ilya_zahvatkin 41c1385546 for deploy
2025-05-01 18:29:38 +07:00

148 lines
6.8 KiB
Nginx Configuration File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Настройки воркеров и событий (можно оставить по умолчанию для начала)
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 ...
# }
}