使用 Google OAuth 2.0 的 Nginx 代理

2024-02-29

我有一个 Ubuntu 14.04 服务器,并且有一个运行在以下位置的流星应用程序localhost:3000在此服务器上。我的服务器的公共 FQDN 是sub.example.com。 Meteor 应用程序使用 Google OAuth 2.0,我在 Google API 控制台中进行了以下配置:

URI REDIRECTION  
http://sub.example.com/_oauth/google
http://sub.example.com/_oauth/google?close
 ORIGINES JAVASCRIPT 
http://sub.example.com

我的 Nginx 配置文件如下所示:

server {
    listen 80 default_server;
    server_name sub.example.com www.sub.example.com;
    location / {
        proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_pass http://localhost:3000;
    }
}

代理工作正常,当我访问时我可以访问我的流星应用程序sub.example.com。但是,当我在此应用程序中尝试使用 Google OAuth 2.0 时,会按预期打开一个弹出窗口,我得到:

Error: redirect_uri_mismatch
The redirect URI in the request: http://localhost:3000/_oauth/google?close did not match a registered redirect URI.

我在 nginx 配置文件中使用了标头,但没有成功。

我显然错过了一些东西。


你应该重写Location您的后端发送到 Nginx 的标头,如下所述http://wiki.nginx.org/HttpProxyModule#proxy_redirect http://wiki.nginx.org/HttpProxyModule#proxy_redirect, so:

proxy_redirect http://localhost:3000/_oauth/google http://sub.example.com/_oauth/google;

另一个选项也适用于弹出式登录,即设置ROOT_URLMeteor启动时的环境变量如下:

ROOT_URL="http://sub.example.com" PORT=3000 node main.js
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Google OAuth 2.0 的 Nginx 代理 的相关文章

  • Meteor RESTful 身份验证。是否可以?

    我四处搜寻 但找不到这个问题的满意答案 我有一个流星网站 用户可以在其中登录并创建内容 我还想创建一个能够与网站交互的手机应用程序 并且我希望用户登录手机应用程序并访问网站上的相同内容 很正常 我创建了一个基本的 REST API 用于使用
  • 如何在 OpenShift 上安装 Nginx

    虽然我跟着https blog openshift com lightweight http serving using nginx on openshift https blog openshift com lightweight htt
  • 使用 SSLSocket 的 SOCKS5 代理

    我有一个客户端 服务器应用程序 它通过 Java 的 SSLSocket 远程连接到服务器 我正在尝试实现一种可选模式 通过经过身份验证的 SOCKS v5 代理启用连接 我尝试使用相关教程 http download oracle com
  • 如何在 Nginx 中将会话/cookie 从主域传递到子域?

    因此 我的主域中有一个子域的 iframe 页面 并且该子域页面需要用户登录并具有要访问的成员资格 基本上我需要将会话变量和 cookie 传递到子域以便加载 iframe 我怎样才能在 Nginx 中实现这一目标 饼干有一个domain属
  • 检测默认网络浏览器的代理设置

    MSDN样本 HttpWebRequest myWebRequest HttpWebRequest WebRequest Create http www microsoft com WebProxy myProxy new WebProxy
  • “栅栏已经激活——来不及添加写入”

    下面的错误信息是什么意思 栅栏已经激活 来不及添加写入 以下是如何获取它的示例 环境 Mac OS X http en wikipedia org wiki Mac OS X Lion 流星0 3 8 项目创建 meteor create
  • 使用 Fourseven:scss 在 Meteor 中加载 css

    我正在使用 fourseven scss 来编译 scss 文件 如果我包括我的 这似乎工作正常 scss客户端目录下的文件 不过我想把它们留在我的组件附近 imports ui stylesheets 或者就在组件旁边 imports u
  • X-Forwarded-For 和 X-Real-IP 标头之间的差异

    我使用 Nginx 作为反向代理 这些标头有什么区别 proxy set header X Forwarded For proxy add x forwarded for proxy set header X Real IP remote
  • nginx+uwsgi+django,uwsgi中似乎有一些奇怪的缓存,帮帮我

    这是 uwsgi 配置 uwsgi uid 500 listen 200 master true profiler true processes 8 logdate true socket 127 0 0 1 8000 module www
  • Google Webmasters API for Java 返回空网站列表

    我编写了一个简单的站点列表查询代码 它使用 Oauth 与服务帐户基于谷歌的文档 https developers google com identity protocols OAuth2ServiceAccount 所使用的身份验证密钥文
  • 如何在谷歌同意屏幕中添加徽标?

    我已经在谷歌开发者控制台中创建了项目 现在我想在同意屏幕中设置我的徽标 我的计算机上有徽标 同意屏幕上的徽标字段需要 URL 有什么方法可以在我的计算机上的同意屏幕上设置徽标吗 我还尝试在谷歌驱动器上上传图像并将其共享链接放在徽标字段中 您
  • Laravel 路由使用 nginx 覆盖 phpmyadmin 路径

    我的 LEMP Droplet 上有以下 nginx 配置 server listen 80 default server listen 80 default server ipv6only on root var www html pub
  • Websocket-rails 不适用于 Nginx 和 Unicorn 的生产环境

    我有 Rails 3 2 应用程序和 gem websocket rails 0 7 在开发机器上 一切正常 在生产环境中 我使用 Nginx 1 6 作为代理服务器 使用 Unicorn 作为 http 服务器 Thin 用于独立模式 如
  • 使用forever运行meteor生成的节点包的正确语法是什么?

    在文档中 在您自己的服务器上运行meteor的过程是运行 meteor bundle bundle tgz 然后提取这个 tarball tar xzvf bundle tgz 然后启动一个节点服务器 MONGO URL mongodb l
  • 使用 Clapprjs 在网页上流式传输 .m3u8

    我使用 nginx rtmp 将 rtmp 转换为 hls 并使用 Clappr 在网页中进行流式传输 但 Clappr 采用旧的 ts 段 导致 404 错误 因为它在服务器上被删除 如何解决这个问题 抱歉 这是我第一次使用 nginx
  • Docker-compose Predis 不通过 PHP 连接

    我正在尝试使用 docker compose 将 PHP 与 redis 连接 docker compose yml version 2 services redis image redis 3 2 2 php image company
  • 电子表格的授权范围

    我创建了一个独立的 Google Apps 脚本 它不属于任何文档 该脚本会以固定的时间间隔自动触发 这个脚本 创建几个文件夹 如果它们不存在 创建一个 Google 电子表格 如果不存在 读过说 电子表格 更新日历事件 我注意到 当我第一
  • 如何在meteor中建立单独的测试和开发数据库

    我已经为我的流星应用程序编写了一些测试 由于他们具有删除所有文档或填充新文档的设置和拆卸方法 因此我想在专用于测试的数据库上运行它们 我注意到数据库存储在 meteor local db 中 理想情况下 我希望从不同的端口访问 db tes
  • 无法拦截来自 Nike.com 登录请求的流量

    我正在使用 BurpSuite 拦截登录时发送的 HTTP HTTPS 请求https www nike com https www nike com 我试图通过以下步骤来实现这一目标 打开 BurpSuite 和 Firefox 开启代理
  • Firefox 中的代理设置不会“粘连”

    在家里我们有一个代理服务器 在工作中我们不会 Firefox 在这方面令人恼火 每当我启动它时 它都会默认使用代理服务器 如果我执行 工具 gt 选项 gt 设置 并选择 无代理 则没有问题 但是 如果我关闭 Firefox 并重新启动它

随机推荐

  • 如何 PHPUnit 断言函数

    我想知道如何验证 类 是否具有函数 assertClassHasAttribute 不起作用 这是正常的 因为函数不是属性 当 PHPUnit 没有提供断言方法时 我要么创建它 要么使用带有详细消息的较低级别断言之一 this gt ass
  • 使用 ASIHTTPRequest 将文件从 iPhone 上传到服务器

    我一直在尝试上传文件 登录 zip 使用 ASIHTTPRequest 库从 iPhone 到 Mac OS X Snow Leopard 中的内置 Apache 服务器 我的代码是 NSString urlAddress NSString
  • CSS:选择最后排序的 Flex 子项

    给定任意数量的具有内联的 Flexbox 子项order用于排序的属性 如何选择 CSS 中最后一个排序的元素 ul style display flex li a li li b li li c li li d li li e li ul
  • 在没有 #include wchar 的 GCC C 中,前缀 L"..." 代表什么?

    也就是说 为什么unsigned short var L 工作 但是unsigned short var L 才不是 L 属于类型wchar t 它可以隐式转换为unsigned short L 属于类型wchar t 2 不能隐式转换为u
  • 如何使用OpenID或OAuth进行内部第一方认证?

    我正在为一组 RESTful Web 应用程序的用户开发一个内部身份验证系统 我们的目的是 用户应该能够通过 Web 表单登录一次 并能够适当访问我们域中的所有这些 RESTful 应用程序 这些应用程序可能分布在跨许多服务器的私有云中 我
  • 接下来Js Router.push不是函数错误

    当我尝试使用 Router push 进行重定向时 出现以下错误 TypeError next router WEBPACK IMPORTED MODULE 3 Router push is not a function 我正在尝试从 cr
  • 记录 ASP Web API 操作的持续时间

    我正在使用 ActionFilter 来记录 ASP NET Web API 项目的所有操作调用 OnActionExecuted 方法讲述了很多有关正在发生的事情的信息 我只是不知道如何找到一种有效的方法来测量执行时间 像这样的事情应该可
  • pandoc 在转换为 pdf 时不会对代码块进行文本换行

    我正在使用 pandoc 和 xelatex 引擎将 markdown 转换为 pdf 我像这样运行 pandoc pandoc s backbone fundamentals md o backbone fundamentals pdf
  • SpecFlow - 重试失败的测试

    有没有办法实现AfterScenario在失败的情况下重新运行当前测试的钩子 像这样的东西 AfterScenario retry public void Retry if ScenarioContext Current TestError
  • 当 C 表达式中发生整数溢出时会发生什么?

    我有以下 C 代码 uint8 t firstValue 111 uint8 t secondValue 145 uint16 t temp firstValue secondValue if temp gt 0xFF return tru
  • 在 drools-camel-server 上重新加载远程 drools guvnor 资源

    我正在使用 drools camel server 5 4 Final 来执行从 jboss AS7 上的 guvnor 获取的规则 如下所示
  • 如何清除字符串流变量?

    我已经尝试过几件事了 std stringstream m m empty m clear 两者都不起作用 对于所有标准库类型的成员函数empty 是一个查询 而不是一个命令 即它的意思是 你是空的吗 而不是 请扔掉你的东西 The cle
  • 列名作为 PL/SQL ORACLE 中的变量

    我想要一个代码 其中我将列名声明为变量 然后使用此变量从某个表中检索所需的列 DECLARE col n VARCHAR 100 X BEGIN select col n from my table END Oracle 中最简单 最明确的
  • 确定 Ravenscar 程序中堆栈使用情况的最佳实践

    我正在使用 Ravenscar 子集编写一个 Ada 程序 因此 我知道执行时正在运行的任务数量 该代码是由 gcc 编译的 fstack check https gcc gnu org onlinedocs gnat ugn Stack
  • 使用 SQL Server 2012 生成包含一天中各小时的日历表

    问题陈述 我在消防部门工作 正在对我的数据进行统计分析 一个问题是生成一个日历年中每天每小时的服务呼叫数量 我需要一张可以连接到一年中每一天和每天每小时的火灾事件的表 我希望的是以下内容 使用军事时间 2017 年 1 月 1 日 00 0
  • 如何隐藏任务栏条目但保留窗口窗体?

    我想隐藏任务栏条目以最大化有效空间 因为该应用程序有一个系统托盘图标 我不需要任务栏条目 该应用程序不允许您只有一个系统托盘而不是两者都有 如何隐藏任务栏条目但保留窗口窗体 您的申请是用什么语言编写的 你想要的API调用被称为设置窗口长度
  • 删除 UIPopoverPresentationController 后面的调光视图

    我正在尝试删除使用 UIPopoverPresentationController 呈现的弹出窗口后面的变暗视图 我已经实现了自定义 UIPopoverBackgroundView 但似乎没有办法摆脱这种变暗视图 我已经使用视图层次结构检查
  • initializer_list c++11 中的求值顺序

    在下面的代码中是否需要f1之前被调用f2 或反之亦然 还是未指定 int f1 int f2 std initializer list
  • 在 Python 列表推导式中缓存值

    我正在使用以下列表理解 resources obj get file for obj in iterator if obj get file None 有没有办法 缓存 obj get file 当它在 if 语句中检查时 这样就不必调用g
  • 使用 Google OAuth 2.0 的 Nginx 代理

    我有一个 Ubuntu 14 04 服务器 并且有一个运行在以下位置的流星应用程序localhost 3000在此服务器上 我的服务器的公共 FQDN 是sub example com Meteor 应用程序使用 Google OAuth