你好,
我是 Discourse 的新手。最近创建了一个论坛,现在正在将网站和论坛迁移到新的域名。
论坛的旧域名:https://forum.skymail.app(已停用,会重定向到新网站)
新域名:https://forum.sugarmail.app(已正常运行)
Google 登录遇到了问题。我已经在 Google Cloud 项目中创建了相关配置,并在切换到新域名后更新了 Client ID 下的重定向 URL,目前设置为:
https://forum.sugarmail.app/auth/google_oauth2/callback
现在的问题是,当我尝试“使用 Google 登录”时,Discourse 中出现了以下错误:
https://forum.sugarmail.app/auth/failure?message=csrf_detected 授权已超时,或您已切换浏览器。请重试。
当论坛位于旧域名 forum.skymail.app 时,Google 登录一直正常工作。
我在更改域名后确实执行了 ./launcher rebuild app,并确保在 app.yaml 中更新了 DISCOURSE_HOSTNAME 下的域名(事实上,如果不这样做,论坛根本无法加载)。
请问有什么建议吗?
1 个赞
david
(David Taylor)
2
通常情况下,当您启动登录流程时,浏览器中会设置 _forum_session Cookie。然而,在您的网站上,这似乎并未发生。
您的网站是否有任何可能干扰 Cookie 的插件或代理?
2 个赞
感谢您的回复。
插件 - 没有,未使用任何插件。安装后我唯一做的操作是启用 Google 认证(客户端 ID 和密钥)以及启用“始终使用 HTTPS”。
代理 - 我使用 nginx 作为反向代理(同时也提供主应用网站的服务)。
# discourse
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_pass_request_headers on;
proxy_pass http://localhost:10080;
}
在 containers/app.yaml 中:
expose:
- "10080:80" # http
- "10443:443" # https
Discourse 设置中的 Let’s Encrypt 未启用。因此,容器内的 nginx 提供的是纯 HTTP 服务,而外部的 nginx 负责 SSL 终止。
这与我在旧域名上的配置几乎相同,唯一的区别是“强制 HTTPS”。
我当前运行的是 2.6.0.beta3 版本。
1 个赞
riking
(Kane York)
5
请确保您发送了 X-Forwarded-Proto: https。
1 个赞
谢谢 @riking。我已经按原样复制了你链接中的 nginx 配置块,然后按照 Discourse 管理控制台的建议启用了“强制 HTTPS”。
我的论坛现已恢复运行,Google 认证也能正常工作。
不过,仍有一个问题存在:
Chrome 和 Firefox 都提示我页面内容不安全。
查看 Chrome 开发者工具中的网络追踪,问题出在这个链接(使用的是普通 HTTP,而非 HTTPS):
http://forum.sugarmail.app/uploads/default/optimized/1X/_129430568242d1b7f853bb13ebea28b3f6af4e7_2_512x512.png
2 个赞
啊,算了。我刚设置了一个新的自定义网站图标,现在它已通过 HTTPS 获取。不再有“混合内容”警告了。
太棒了,谢谢你的帮助!
3 个赞
system
(system)
关闭
8
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.