Django с Nginx и Cloudflare: "400 Bad Request" при перенаправлении
Я интегрирую иранский провайдер банковских шлюзов типа Stripe с моим приложением Django. Когда пользователь совершает успешную покупку, шлюз перенаправляет его обратно на наш сайт, используя предопределенный URL-адрес перенаправления, чтобы завершить процесс пополнения счета.
Однако некоторые пользователи сталкиваются с ошибкой "400 Bad Request" (как показано на скриншоте ниже), когда они перенаправляются обратно на наш сайт. В сообщении об ошибке говорится, что "Обычный HTTP-запрос был отправлен на HTTPS-порт". Вот моя конфигурация Nginx:
server {
listen 80 default_server;
server_name _;
return 301 https://$server_name$request_uri;
}
server {
listen 8443 default_server ssl http2;
listen [::]:8443 ssl http2;
server_name mydomain.com;
ssl_certificate /etc/nginx/ssl/mydomain.com.cer;
ssl_certificate_key /etc/nginx/ssl/mydomain.com.cer.key;
access_log /project/logs/nginx/access.log;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options SAMEORIGIN;
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options nosniff;
add_header Referrer-Policy strict-origin-when-cross-origin;
location / {
try_files $uri @proxy_api;
}
location @proxy_api {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
proxy_pass http://web:8000;
}
location /static/ {
autoindex on;
alias /project/app/staticfiles/;
}
location /logs {
autoindex on;
alias /project/logs;
types {
text/plain log;
}
}
}