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