You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署集成Azure AD的Django应用至Azure Web App遇重定向URI问题

解决方案:部署集成Azure AD的Django应用到Azure Web App并解决HTTPS重定向问题

问题1:如何正确部署使用runserver_plus的Django应用到Azure Web App?

首先明确:Azure Web App生产环境不推荐使用runserver_plus(调试服务器),直接运行该命令会因端口/地址绑定规则报错,原因如下:

  • Azure Web App会自动分配端口(通过环境变量PORT传递),应用必须监听0.0.0.0而非特定域名或localhost
  • runserver_plus是开发调试工具,性能和安全性不满足生产要求

正确部署步骤:

  1. 更换生产级服务器(如Gunicorn)
    在requirements.txt中添加Gunicorn依赖:

    gunicorn==20.1.0
    
  2. 配置Django信任Azure代理头
    在项目settings.py中添加以下配置,让Django识别Azure反向代理传递的HTTPS请求:

    # 信任Azure的HTTPS代理头
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
    # 添加Azure Web App域名到允许列表
    ALLOWED_HOSTS = ['fno-calculator.azurewebsites.net', 'localhost']
    # 可选:强制Cookie使用HTTPS
    SESSION_COOKIE_SECURE = True
    CSRF_COOKIE_SECURE = True
    
  3. 设置Azure Web App启动命令
    在项目根目录创建startup.txt文件,内容为:

    gunicorn --bind=0.0.0.0 --timeout 600 <你的Django项目名>.wsgi:application
    

    (替换<你的Django项目名>为实际项目名称,比如myproject.wsgi:application)

  4. 保持原有部署工作流
    无需修改.github/workflows/deploy_on_<myapp>.yml中的azure/webapps-deploy动作,Azure Web App会自动读取启动命令并运行Gunicorn。


问题2:其他确保重定向URI为HTTPS的方法

除了上述标准部署方式,还可以通过以下手段保证Azure AD重定向URI为HTTPS:

  • 正确配置Azure AD应用注册
    在Azure AD门户中,确保注册的重定向URI为https://<你的Web App域名>/auth/redirect,与Django应用中配置的重定向地址完全一致。
  • 使用相对路径或动态生成重定向URI
    若使用OAuth库(如python-social-auth或django-allauth),可配置重定向URI为相对路径(如/auth/redirect),库会根据当前请求的协议(由代理头传递)自动生成HTTPS地址。
  • 强制Django生成HTTPS URL
    在settings.py中设置:
    USE_X_FORWARDED_HOST = True
    SECURE_SSL_REDIRECT = True
    
    (注意:SECURE_SSL_REDIRECT会强制所有HTTP请求跳转到HTTPS,需确保Azure Web App已配置HTTPS)

内容的提问来源于stack exchange,提问作者architdatar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 22:55:28