Oracle APEX社交登录认证后重定向带:80端口异常求助
解决Oracle APEX Azure AD登录回调URL带多余:80的问题
按照教程配置Azure AD社交登录后,APEX生成的回调URL为https://our-domain/:80/ords/apex_authentication.callback?...,浏览器报错;手动移除:80后可正常访问。环境为Azure托管Ubuntu服务器,Docker部署Oracle DB 21.3、ORDS 22.2.0,APEX 22.1,Nginx作为SSL反向代理。
核心原因
ORDS/APEX未正确识别反向代理传递的外部协议(HTTPS)和端口(443),默认使用内部端口或HTTP默认端口80生成回调URL。
修复步骤
1. 配置Nginx传递正确的转发头
在Nginx的反向代理配置块中,添加以下头信息,确保ORDS能获取外部请求的真实协议、端口和主机:
location /ords/ { proxy_pass http://<ords-container-name>:8080/ords/; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Real-IP $remote_addr; }
- 将
<ords-container-name>替换为你的ORDS容器名称或内部IP $scheme会自动识别外部请求的协议(HTTPS),$server_port为外部端口(443)
2. 配置ORDS信任反向代理转发头
方式一:修改ORDS配置文件
在ORDS的conf/ords.properties中添加以下配置:
# 信任反向代理的来源(可指定具体域名,*表示信任所有) ords.proxy.trusted.origins=* # 指定从转发头获取主机、端口、协议信息 ords.http.host.header=X-Forwarded-Host ords.http.port.header=X-Forwarded-Port ords.http.protocol.header=X-Forwarded-Proto
方式二:Docker环境通过环境变量配置
如果使用Docker Compose,在ORDS服务中添加环境变量:
services: ords: image: container-registry.oracle.com/database/ords:22.2.0 environment: - ORDS_PROXY_TRUSTED_ORIGINS=* - ORDS_HTTP_HOST_HEADER=X-Forwarded-Host - ORDS_HTTP_PORT_HEADER=X-Forwarded-Port - ORDS_HTTP_PROTOCOL_HEADER=X-Forwarded-Proto # 其他容器配置(端口映射、依赖等)...
3. 验证APEX实例URL设置
登录APEX工作区,进入实例管理 → 实例设置 → 安全,确认实例URL设置为https://your-domain.com/ords(无多余端口)。
4. 验证配置生效
访问https://your-domain.com/ords/ords/status,查看Proxy Settings部分,确认转发头配置已正确加载。
内容的提问来源于stack exchange,提问作者Thomas Tschernich
相关产品推荐
相关产品推荐

