Azure App Service中Nginx反向代理对接FusionAuth容器的配置问题
Azure App Service中Nginx反向代理对接FusionAuth容器的配置问题
首先可以明确告诉你:你想通过Nginx反向代理给FusionAuth做HTTPS终结、传递正确请求头的方案完全可行,问题出在配置细节和域名/服务的联动逻辑上,咱们一步步来解决:
一、先定位重定向循环的核心原因
你现在遇到的“多次重定向”问题,本质是两个环节的冲突:
- 你的Nginx把请求转发到了FusionAuth App Service的HTTPS地址(
https://mycustomapp.azurewebsites.net/),而Azure App Service本身会把HTTPS请求转换成HTTP,转发给容器内监听9011端口的FusionAuth; - FusionAuth在生产模式下检测到请求是HTTP的,就会触发重定向到HTTPS;
- 这个重定向被Nginx返回给浏览器后,浏览器再次访问你的Nginx地址,重复上述流程,形成循环。
二、针对性修改配置
1. 调整Nginx的代理目标地址
把proxy_pass改成FusionAuth App Service的HTTP地址,而不是HTTPS:
location / { 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; # 这个很关键,告诉FusionAuth原始请求是HTTPS proxy_set_header X-Forwarded-Port $server_port; proxy_read_timeout 90; proxy_http_version 1.1; proxy_pass http://mycustomapp.azurewebsites.net/; # 这里改成HTTP }
这样Nginx直接发送HTTP请求到FusionAuth的App Service,Azure会把它转发给容器的9011端口,同时你设置的X-Forwarded-Proto头会告诉FusionAuth:原始用户请求是HTTPS的,不需要再重定向。
2. 必须让FusionAuth信任反向代理的请求头
FusionAuth默认不会信任外部的X-Forwarded-*头,你需要修改FusionAuth的配置(推荐用Azure App Service的环境变量方式):
- 在FusionAuth的App Service“配置-应用程序设置”里添加两个环境变量:
FUSIONAUTH_APP_RUNTIME_MODE=productionFUSIONAUTH_APP_TRUST_X_FORWARDED_HEADERS=true
这个配置是让FusionAuth认可反向代理发来的X-Forwarded-Proto等头,不再强行重定向到HTTPS。
3. 优化域名指向逻辑(可选但更合理)
你现在给Nginx用了proxy.mycustomapp.com,给FusionAuth用了auth.mycustomapp.com,其实更合理的逻辑是:把auth.mycustomapp.com直接指向Nginx的App Service,用户访问auth.mycustomapp.com就经过Nginx代理到FusionAuth,而不是用单独的proxy子域名。这样既符合业务域名的语义,也避免了用户混淆不同的子域名。
三、验证步骤
- 重启Nginx的App Service,确保新配置生效;
- 重启FusionAuth的App Service,让新的环境变量生效;
- 访问你的代理域名(不管是
proxy.mycustomapp.com还是调整后的auth.mycustomapp.com),检查是否还存在重定向循环; - 查看FusionAuth的管理后台,确认不再出现“使用HTTP端口”的警告。
备注:内容来源于stack exchange,提问作者nerdalert
相关产品推荐
相关产品推荐

