Фронтенд и бэкенд-серверы за Nginx - проблема CORS [закрыто]
Вот вопрос новичка о наличии двух серверов за nginx.
У меня есть два приложения, nextjs frontend и django backend. Nextjs слушает порт 127.0.0.1:3000, а django обслуживает свой api на 127.0.0.1:8000/api. Оба приложения находятся за сервером nginx, который сам слушает порт 38. Идея состоит в том, чтобы сделать бэкенд django полностью недоступным извне.
Как настроить конфигурацию nginx, чтобы django api видел запросы nextjs как исходящие с 127.0.0.1:3000, а не с 127.0.0.1:38? Я установил в django CORS_ALLOWED_ORIGINS на "http://127.0.0.1:3000" и хотел бы, чтобы так и оставалось.
Вот один из нескольких вариантов файла nginx conf, которые я пробовал (ни один не сработал)
server {
listen 38;
location /api {
proxy_pass http://127.0.0.1:8000; # Forward API requests to Django
proxy_set_header Host $host; # Preserve the original Host header
proxy_set_header X-Real-IP $remote_addr; # Pass the real IP of the client
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # Pass the forwarded IP
proxy_set_header X-Forwarded-Proto $scheme; # Pass the protocol (http or https)
}
location / {
proxy_pass http://127.0.0.1:3000; # Forward all other requests to Next.js
proxy_set_header Host $host; # Preserve the original Host header
proxy_set_header X-Real-IP $remote_addr; # Pass the real IP of the client
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # Pass the forwarded IP
proxy_set_header X-Forwarded-Proto $scheme; # Pass the protocol (http or https)
}
}
Что я продолжаю получать, так это то, что django получает заголовок с порта 38:
Любая помощь приветствуется.