Django Djoser не работает в production return 405 при использовании react в качестве фронтенда

В моем приложении я использую Django в качестве бэкенда и react JS для фронтенда. Я использую Django Djoser для активации пользователя и сброса пароля. Локально все работает нормально. После создания нового пользователя, ссылка активации будет отправлена на его email

http://127.0.0.1/activate/MjE1/c1vk2z-0cf8bc5d2484ddd32001844b53da1900

Если я использую свой домен https://workmatch.rickykristianbutarbutar.com/activate/MjE1/c1vk2z-0cf8bc5d2484ddd32001844b53da1900 то выходит 405

после нажатия на эту ссылку произойдет переход на страницу активации фронтенда, затем пользователь нажмет кнопку "Активировать"

const sendActivationConfirmation = async () => {
    setButtonLabel("Activating ...");
    try {
        let response = await fetch(`/auth/users/activation/`, {
            method: "POST",
            headers: {
                "Content-Type": "application/json",
            },
            body: JSON.stringify({
                uid: uid,
                token: token
            })
        });

        if (response.ok) {
            setAlert({
                success: "Your account has been activated. We'll redirect you to the login page in 5 seconds.",
            });
            activationSuccess.current = true;
        } else if (response.status === 403) {
            let data = await response.json();
            setAlert({
                error: data.error
            });
        } else if (response.status === 400) {
            setAlert({
                error: "Bad Request, user may have been accidentally deleted."
            });
        }
    } catch (error) {
        if (error.name === "SyntaxError" && error.message.includes("Unexpected end of JSON input")) {
            console.error("Truncated data: Not all of the JSON data was received");
        } else {
            console.error(error);
        }
    } finally {
        setButtonLabel("Activate");
    }
};

этот код будет кодом активации и отправьте его на сервер

Это мои настройки Djoser в файле Django settings.py

DJOSER = {
    "USER_ID_FIELD": "username",
    "LOGIN_FIELD": "email",
    "USER_CREATE_PASSWORD_RETYPE": True,
    "USERNAME_CHANGED_EMAIL_CONFIRMATION": True,
    "PASSWORD_CHANGED_EMAIL_CONFIRMATION": True,
    "SEND_CONFIRMATION_EMAIL": True,
    "SET_USERNAME_RETYPE": True,
    "SET_PASSWORD_RETYPE": True,
    "PASSWORD_RESET_CONFIRM_URL": "#/password/reset/confirm/{uid}/{token}",
    "USERNAME_RESET_CONFIRM_URL": "#/email/reset/confirm/{uid}/{token}",
    "ACTIVATION_URL": "activate/{uid}/{token}",
    "SEND_ACTIVATION_EMAIL": True,
    "SERIALIZERS": {
        "activation": "djoser.serializers.ActivationSerializer",
        "user_create": "userApi.serializers.UserCreateSerializer",
        "user": "userApi.serializers.UserCreateSerializer",
        "user_delete": "djoser.serializer.UserDeleteSerializer",
    },
}
enter code here

А это мой urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/user/', include('userApi.urls')),

    # JWT authentication
    re_path(r'^auth/', include('djoser.urls')),
    re_path(r'^auth/', include('djoser.urls.jwt')),

    path('ckeditor/', include('ckeditor_uploader.urls')),
]

Все работает нормально, пока я не разверну его на моем рабочем сервере Есть ли какие-нибудь параметры, которые нужно настроить на стороне сервера? Я использую Ngix и gunicorn

вот моя конфигурация nginx

server {

    root /root/WorkMatch/frontend/HiringRemoteWorker-Frontend/build/;
    index index.html index.htm /index.html;

    server_name workmatch.rickykristianbutarbutar.com;

    location /static/ {
         alias /root/WorkMatch/frontend/HiringRemoteWorker-Frontend/build/static/;
    }

    location / {
        try_files $uri $uri/ /index.html;
    }

    location /api/ {
        # Proxy requests to Gunicorn/Django backend
        proxy_pass http://127.0.0.1:8001;
        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;
    }

    location ~ ^/admin {
        proxy_pass http://unix:/root/WorkMatch/backend/HiringRemoteWorker/HiringRemoteWorker.sock;
        proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /django-static {
        autoindex on;
        alias /root/WorkMatch/backend/HiringRemoteWorker/staticfiles;
    }

    location /media/ {
        alias /root/WorkMatch/backend/HiringRemoteWorker/media/profile_picture/;
    }

}

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