Бесконечный цикл переадресации для бэкенда 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, чтобы предотвратить этот бесконечный цикл? Где в моем коде бэкенда я должен проверить, чтобы исправить это?
Пожалуйста, запросите дополнительную информацию, если это необходимо.