首页 > 解决方案 > 使用 nginx 反向代理 + docker setup 避免从公共服务器调用 Google oauth 重定向到本地主机

问题描述

我正在建立一个具有以下基础架构的技术博客:

Client <---domain.tld:80---> Nginx Reverse Proxy <---localhost:8001---> Docker container with Django web app

我在容器中使用 Gunicorn 作为 WSGI Web 服务器。

我面临的问题是,当我想在我的评论部分包含 Google 身份验证并调用我的相应 URI 进行身份验证(即http://domain.tld/auth/login/google-oauth2/)时,我得到以下信息来自谷歌的错误:

请求中的重定向 URI http://localhost:8001/auth/complete/google-oauth2/与授权给 OAuth 客户端的不匹配。

所以主要问题是谷歌认为我希望重定向主机是本地主机,因为我的应用程序部署在本地主机上(并且只通过我的反向代理服务到互联网),但我当然需要它是 domain.tld 代替。

我没有找到一个选项,我可以明确告诉谷歌流量应该被重定向到,我只能授权 URI。

当然,我尝试允许本地主机重定向访问,但显然这无济于事,因为谷歌重定向到本地主机 URI。

我的代码主要基于this blog postthis stackoverflow question

由于这主要是从我的服务器到 URL 的链接调用,我认为我的代码根本不应该那么有用。

我感谢任何有用的反馈!

标签: djangopython-3.xdockernginxgoogle-oauth

解决方案


您可以使用serveo(或类似的服务 - ngrok 等)来公开您的本地服务器,并通过它让 google 或其他 oauth 提供程序回调。

您也可以忽略此问题并/admin在本地环境中登录。


推荐阅读