问题标签 [proxypass]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
386 浏览

apache - 如何使用 ProxyPass 和 Varnish 将外部域显示为子文件夹

我已经配置了一个虚拟主机以将外部域显示为子目录:

如果我尝试访问舞台服务器上的 example.com/subfolder,它可以工作并且我看到 externaldomain.com 内容。如果我在生产服务器上尝试相同的操作,由于 Varnish 问题,我会收到 500 错误。

这是我的清漆配置:

这就是 apache 错误日志中写的内容

你能建议我如何解决吗?

我想我必须做一些与 VCL 相关的事情,但仅此而已。

0 投票
1 回答
61 浏览

http - https不知何故被重新写入http并导致我出错

简而言之,我有一个运行它自己的网络服务器的自定义软件。然后,我找到了有关如何使用 apache 作为代理来为该站点启用 ssl 的说明。(长话短说,我的自定义软件不支持 ssl,这不是一个选项)

当我转到https://myserver.com:8096/(端口在内部转发到 443)时,服务器重写了http://myserver.com:8096/abc/123/导致连接失败的 url,因为它需要 HTTPS。

这是我的默认 ssl 配置,希望我只是在某个地方有错误......

缺少的 /VirtualHost 在那里,我只是不知道如何让它在这里显示......

有人有线索吗?

提前致谢, 马克

0 投票
1 回答
217 浏览

ruby-on-rails - Nginx 重定向登录

我的代理通行证进入示例:7456/nix/sign_in,但是当我输入登录名和密码并单击提交按钮时,服务器不会停留在示例:7456/nix/sign_in 并重定向到示例:7456/sign_in。

如何修复重定向并保留示例:7456/nix/ - 在代理通行证上。

我使用 Nginx、Passenger 和 Ruby on Rails。

0 投票
2 回答
403 浏览

nginx - Nginx proxy_pass,定义不匹配的情况?

我有 2 个带有proxy_pass的文件:

他们都工作正常。

现在,如果我通过另一个域名在针对相同 IP 地址的 DNS 服务器上定义)访问该服务器,例如。www.domain3.fr,而不是 404,我得到了与 www.domain2.fr 相同的结果!

我猜是因为最后一个location /,但是如果域名不一样我怎么能做404错误server_name呢?

0 投票
1 回答
1011 浏览

drupal - Nginx 路径组件在根文件夹(Drupal 和 Laravel)加载子域、兄弟项目

我已经尝试了几种我在互联网上找到的方法,但我仍然没有设法工作。

我想要的是,我有一个 url 的服务器配置: www.domain.com我已经安装并配置了一个 Drupal 网站。

我还有一个子域api.domain.com,我在其中安装并运行了 Laravel 应用程序。

重要的:

  • 每个项目都有自己的 nginx 配置。
  • 这两个项目都是我根目录下的兄弟项目。

我需要的

对 URL www.domain.com/api的所有请求都被请求到子域api.domain.com并且如果是特定的 URL,例如www.domain.com/api/option1/options2 request api.domain.com/option1/ option2 重定向用户。

所以我基本上需要 Drupal 的 NGINX 配置忽略所有对/api URL 的请求和对子域的请求

为什么我需要

我需要将所有子域和其他所有内容都放在同一个域下,因为我只有 SSL 可用于www.domain.com而不是*.domain.com


我不知道这是否是解决我的问题的最佳方法,但如果您有任何其他建议,我愿意。

提前致谢。


我自己的答案

我无法回答自己的问题,所以这是我设法解决的答案。

这也将强制使用最后的斜杠。

如果您不想强制使用尾部斜杠,只需删除该位置的最后一个斜杠

0 投票
0 回答
926 浏览

regex - 您可以使用 ProxyPassMatch 更改 URL 的查询字符串吗?

我不确定我正在尝试做的事情是否有效,所以请多多包涵。

我正在尝试通过反向代理设置使用 ProxyMassMatch (Apache) 指令来更改通过我的本地主机访问时出现在给定页面上的 URL 并删除“sid”参数。我知道这个特殊的正则表达式只说明参数不是第一个 cgi arg 时,但我遇到的更大问题是这似乎根本不起作用,所以我想也许我不理解 ProxyPassMatch,尽管阅读文档多次。

为了形象化,如果这有效,我可以将鼠标悬停在我的“本地主机”页面上的 url 上,而不是:

我会看见:

我已经使用 mod_rewrite 成功删除了这个 cgi arg,但是由于其他机制,我被要求使用 ProxyPassMatch 执行此操作,因此实际页面上的 URL 不会显示“sid”参数。有没有人对此有任何见解?

这是我在 .conf 文件中尝试过的众多变体之一。

0 投票
2 回答
17351 浏览

apache - 如何将 LocationMatch 和 ProxyPassMatch 结合起来?

我正在内部机器上设置 Apache 2.4.6 服务器以进行测试。Apache 服务器应该做的一件事是充当在 localhost:3030 上找到的另一台服务器的反向代理。

localhost:3030 上的服务器在其第一个路径级别上需要几个数据集名称中的一个(目前,该集合仅包含 dataset experimental,但稍后将添加更多),所以我试图从请求的路径。

在我的虚拟主机中,这有效:

对于其他数据集,我可以将其复制并替换experimental为其他数据集名称。显然,这会导致大量代码重复/冗余,这既是错误的来源,也是维护的恐惧。

因此,我想变得更加灵活,并在一个这样的块中处理多个数据集。这应该可以通过LocationMatch指令来实现。

this commentthis page所示,在块内使用时我需要替换。本质上,文档声明相同:ProxyPass ProxyPassMatchLocationMatch

在 LocationMatch 部分中也会发生同样的情况,但是 ProxyPass 不会这样解释正则表达式,因此有必要在这种情况下使用 ProxyPassMatch。

LocationMatch文档解释:

从 2.4.8 开始,命名组和反向引用被捕获并写入到环境中,相应的名称以“MATCH_”为前缀并且大写。这允许从表达式和模块(如 mod_rewrite)中引用 URL 的元素。为了防止混淆,编号(未命名)的反向引用将被忽略。改用命名组。

该信息仅在 Apache 2.4.8 中有效,这可能是以下在我的 2.4.6 安装中不起作用的原因:

另一方面,此页面该帖子暗示可以使用数字组索引($1)(因为帮助文本仅在 httpd 2.4.8 有效,我怀疑/希望数字参考在 2.4.8 之前有效(?)

无论如何,我已经尝试过这个:

然而根据日志,内部调用调用http://localhost:3030/$1/而不是http://localhost:3030/experimental/在请求experimental虚拟主机 URL 上的路径时调用。

ProxyPassMatch文档只说:

在 LocationMatch 部分中使用时,第一个参数被省略,正则表达式从 LocationMatch 中获取。

但是,文中并没有费心提供如何结合LocationMatch和的示例ProxyPassMatch我究竟做错了什么?

0 投票
2 回答
1777 浏览

nginx - nginx:对 proxy_pass 响应标头采取行动

我想使用 nginx 作为前端代理,然后根据响应的 MIME 类型(Content-Type 标头)有条件地代理到另一个 URL。

例如,假设我的 1% 的客户正在使用不处理 PNG 的用户代理。对于那个 UA,如果响应的类型是 image/png,我想再次 proxy_pass 到一个特殊的 URL,该 URL 将获取 PNG 并为我转换它。

理想情况下,我会在不损害 99% 不需要这种特殊处理的用户的性能和缓存的情况下这样做。我无法修改后端应用程序。(否则我可以让它检测 UA 并修复响应,或者发送 X-Accel-Redirect 让 nginx 运行另一个位置块。)

如果这不可能或性能不佳,我会从哪里开始编写模块以达到预期的效果?如,哪个扩展点让我最接近实现这个逻辑?

编辑:似乎我可以使用 Lua 执行子请求,然后检查那里的响应标头。但这意味着通过 Lua 传递每个请求,这似乎不是最理想的

0 投票
2 回答
884 浏览

apache - ProxyPass redirecting internally

I'm trying to set up two Apache ProxyPass rules to direct to different Nexus servers. What I want is:

http://mainserver/nexus -> http://server1:8080/nexus

and

http://mainserver/nexus-pro -> http://server2:8081/nexus

I had it set up to work with our original server, but adding a second rule causes requests for nexus-pro to redirect to the main apache server with /nexus, which then forwards on to the wrong server, thus:

http://mainserver/nexus-pro -> http://mainserver/nexus -> http://server1:8080/nexus

I imagine this is something Nexus is doing itself, but I'm not really in control of that.

Here is my current Apache config, what do I need to change?

0 投票
1 回答
3106 浏览

ssl - proxy_pass 在 nginx 中使用 ssl 上游

我正在尝试配置一个子域以将请求代理到我无法控制的其他服务器。一位朋友运行该服务器,他使用自己的 CA 来避免为 ssl 证书付费。我尝试将我的配置代理到我自己的一个子域,运行有效的 ssl 证书,它运行良好,但是一旦我代理他和他的“无效”ssl 证书,nginx 就会不断询问我的凭据。

这是我的配置:

我在日志中没有任何错误。我可以浏览/friend之外的所有内容,它可以很好地进行身份验证,但是一旦我进入/friend,身份验证就会一直弹出,就像我输入了错误的密码一样。我知道我的 base64 编码是有效的,我通过在我的一个子域上复制相同的身份验证对其进行了测试,它运行良好,所以我能想到的唯一解释是 nginx 不喜欢他的证书。

是否有一些我会错过的配置让我信任他的 CA?或者只是为了禁用验证,数据根本不合理,即使通过http也可以,但他不想在他的服务器上配置它。所以禁用验证对我来说是一个足够好的解决方案。

谢谢