尝试在反向代理后面使用 osTicket (v1.8.1-dpr),可靠地获取
Invalid CSRF Token __CSRFToken__
Invalid CSRF token [b4cab350cfce13ee10a8cd27445e7f4466db039e] on
(redacted)
原因似乎是 osticket javascript 基于浏览器 IP 生成令牌,这当然与服务器端验证令牌时的反向代理 IP 不同。
反向代理是 ec2 上的一个 Apache 实例
您的反向代理应该发送X-Forwarded-For
。 可以?
是的,反向代理正在将 X-Forwarded-For 设置为正确的地址。 客户端位于 NAT 之后,因此 Javascript 可能会获取 RFC1918 地址,如果它正在获取绑定接口地址(不清楚是否正在发生)。
你能验证代理服务器(运行 osTicket 的地方和客户端)之间的 cookie 设置吗? 检查返回的 cookie 的 cookie 域和 cookie 路径,并确保中间的任何服务器都没有使用 cookie 或 cookie 设置。
我会检查一下,但这很可能是问题所在(内部主机域和代理的域大不相同)。 我会在几个小时后更新。
我知道这篇文章已经有一年多了,但是在尝试使用 osTicket 设置我的反向代理时弹出了几次。 我使用 NginX 作为我的反向代理(我知道,不支持等),通过一些调整我能够通过“无效的 CSRF 令牌”错误。
在我的位置块中,我需要添加一些标题设置:
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_pass_header Set-Cookie;
proxy_pass <Backend osTicket location>;
}
pass_header 似乎使它起作用,但其他设置将确保您的服务器接收正确的 IP 地址。 我相信您也可以在服务器或 http 块中设置这些设置,但这满足了我的需求。
@webbe我们不正式支持 nginx 作为 osTicket 的服务器。 您可以使用任何您想要的反向代理。 就个人而言,我更喜欢 HAProxy。 感谢您发布您的配置信息,很高兴您的设置工作正常。
最有用的评论
我知道这篇文章已经有一年多了,但是在尝试使用 osTicket 设置我的反向代理时弹出了几次。 我使用 NginX 作为我的反向代理(我知道,不支持等),通过一些调整我能够通过“无效的 CSRF 令牌”错误。
在我的位置块中,我需要添加一些标题设置:
pass_header 似乎使它起作用,但其他设置将确保您的服务器接收正确的 IP 地址。 我相信您也可以在服务器或 http 块中设置这些设置,但这满足了我的需求。