Бесконечный цикл переадресации для бэкенда Django (размещенного на railway) приложения (размещенного на cloudfare)

tl;dr Я получаю бесконечный цикл при запросе к бэкенду django, и я не знаю, как это исправить

Я расскажу немного о том, что происходит:

  • Мой django backend работает на localhost (при разработке я использовал nginx в качестве обратного прокси)
  • У меня есть домен cloudfare, и я зарегистрировал на нем backend на railway
  • Когда я пытаюсь подключиться к backend через домен Cloudflare, я продолжаю получать перенаправление на запрошенную страницу - так что это бесконечный цикл
  • Я дам несколько выводов, чтобы показать, что происходит

Заголовки запроса:

Request URL:
https:... <--- my project domain 
Request Method:
GET
Status Code:
301 Moved Permanently
Remote Address:
x.x.x.x:443
Referrer Policy:
strict-origin-when-cross-origin

И ответ:

alt-svc:
h3=":443"; ma=86400
cf-cache-status:
DYNAMIC
cf-ray:
92efc2dfbffc57dd-SYD
content-type:
text/html; charset=utf-8
date:
Sat, 12 Apr 2025 03:50:44 GMT
location:
... <--- same domain name as I requested
nel:
{"success_fraction":0,"report_to":"cf-nel","max_age":604800}
report-to:
{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=BY0YmE3vW8uxgXBlVKUb%2BBuxQrbGw%2F2J2wEGzGndoKueBiCzA%2FYkGsADUkrcMq6KC02ocvzetSIzDhSun56YdCECv04ANU3UaaxEzBQ6%2BnNfN9r5tmjhDD53DHq3IPVCnWnwPw%3D%3D"}],"group":"cf-nel","max_age":604800}
server:
cloudflare
server-timing:
cfL4;desc="?proto=QUIC&rtt=8014&min_rtt=7349&rtt_var=1550&sent=12&recv=11&lost=0&retrans=0&sent_bytes=3715&recv_bytes=3440&delivery_rate=821&cwnd=12000&unsent_bytes=0&cid=b1e2e4808802a704&ts=2802&x=16"
x-railway-edge:
railway/us-west2
x-railway-request-id:
hd3fL70KS824dNgkcC4bnQ_3336177264

Этот запрос и ответ продолжаются до тех пор, пока браузер не вмешается.

Если я curl конечную точку, я просто получаю:

<a href="my backend domain">Moved Permanently</a>.

Итак, Cloudflare имеет гибкий режим шифрования SSL/TLS, и в моем settings.py у меня есть:

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
SECURE_SSL_REDIRECT = False

Я пробовал удалять/переключать эти настройки в settings.py, но безрезультатно. Изменение режима SSL/TLS на full или full (strict) в Cloudflare также не устраняет проблему (full strict вызывает плохой шлюз).

Итак, мой вопрос: что мне нужно иметь в моем settings.py и/или Cloudfare, чтобы предотвратить этот бесконечный цикл? Где в моем коде бэкенда я должен проверить, чтобы исправить это?

Пожалуйста, запросите дополнительную информацию, если это необходимо.

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