Фронтенд и бэкенд-серверы за 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:

Firefox developer tools showing request header with the 127.0.0.1:38 address

Любая помощь приветствуется.

Вернуться на верх