Nginx反向代理下Zammad无法使用Microsoft登录/注册问题排查
Zammad仅Microsoft登录/注册功能失效排查
Zammad系统所有功能均正常运行,仅Microsoft登录/注册功能无法使用,错误截图如下:
现有Nginx配置
外层反向代理Nginx配置
# Settings for a TLS enabled server. upstream backend { server 192.168.99.99:443; } server { ssl on; listen 9443 ssl http2 default_server; ssl_certificate "/etc/pki/nginx/bundle.pem"; ssl_certificate_key "/etc/pki/nginx/private/tpsonline.com.key"; location / { proxy_set_header CLIENT_IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-Ssl on; proxy_set_header Host $host; proxy_pass https://backend; } }
注:原配置末尾多了一个多余的
},需删除后重新加载Nginx配置
Zammad-Helm的Nginx配置
server_tokens off; upstream zammad-railsserver { server localhost:3000; } upstream zammad-websocket { server localhost:6042; } server { listen 8080; server_name _; root /opt/zammad/public; access_log /dev/stdout; error_log /dev/stderr; client_max_body_size 50M; location ~ ^/(assets/|robots.txt|humans.txt|favicon.ico) { expires max; } location /ws { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header CLIENT_IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_read_timeout 86400; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-Ssl on; proxy_pass http://zammad-websocket; } location / { proxy_set_header Host $http_host; proxy_set_header CLIENT_IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_read_timeout 180; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-Ssl on; proxy_pass http://zammad-railsserver; gzip on; gzip_types text/plain text/xml text/css image/svg+xml application/javascript application/x-javascript application/json application/xml; gzip_proxied any; } }
已严格遵循Zammad官方文档及相关GitHub Issue指引配置请求头,但问题仍未解决,请问可能的原因是什么?
排查方向参考
- 回调URL完全匹配检查:Azure AD应用中配置的回调URL必须和Zammad后台设置的完全一致,包括协议(https)、域名、端口(如你使用的9443),格式应为
https://你的域名:9443/auth/microsoft_office365/callback,任何字符差异(如大小写、斜杠)都会导致失败。 - Nginx配置语法修复:外层反向代理配置末尾多了一个多余的
},这会导致Nginx配置加载失败,先删除该括号,执行nginx -t验证配置,再重启Nginx。 - 可信代理设置:在Zammad系统设置的「安全」->「可信代理」中,添加外层Nginx的IP地址,确保Zammad信任转发的
X-Forwarded-*头,否则会将请求识别为HTTP,导致微软OAuth回调时协议不匹配。 - SSL证书完整性:检查外层Nginx使用的SSL证书链是否完整(包含根证书和中间证书),微软OAuth服务会验证回调地址的证书有效性,证书链不完整可能导致后端回调被拒绝。
- Azure AD应用配置验证:确认Azure AD应用的Client ID、Client Secret与Zammad配置完全一致,无多余空格;应用已开启授权码流,且添加了
User.Read等必要的API权限,并完成了管理员同意(若需)。 - 端口与流量拦截检查:确认外层Nginx的9443端口可正常访问,且后端Zammad服务的443端口无防火墙/安全组拦截,流量能正常转发。
内容的提问来源于stack exchange,提问作者Sana.91
相关产品推荐
相关产品推荐

