问题标签 [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.
apache - 如何使用 ProxyPass 和 Varnish 将外部域显示为子文件夹
我已经配置了一个虚拟主机以将外部域显示为子目录:
如果我尝试访问舞台服务器上的 example.com/subfolder,它可以工作并且我看到 externaldomain.com 内容。如果我在生产服务器上尝试相同的操作,由于 Varnish 问题,我会收到 500 错误。
这是我的清漆配置:
这就是 apache 错误日志中写的内容
你能建议我如何解决吗?
我想我必须做一些与 VCL 相关的事情,但仅此而已。
http - https不知何故被重新写入http并导致我出错
简而言之,我有一个运行它自己的网络服务器的自定义软件。然后,我找到了有关如何使用 apache 作为代理来为该站点启用 ssl 的说明。(长话短说,我的自定义软件不支持 ssl,这不是一个选项)
当我转到https://myserver.com:8096/
(端口在内部转发到 443)时,服务器重写了http://myserver.com:8096/abc/123/
导致连接失败的 url,因为它需要 HTTPS。
这是我的默认 ssl 配置,希望我只是在某个地方有错误......
缺少的 /VirtualHost 在那里,我只是不知道如何让它在这里显示......
有人有线索吗?
提前致谢, 马克
ruby-on-rails - Nginx 重定向登录
我的代理通行证进入示例:7456/nix/sign_in,但是当我输入登录名和密码并单击提交按钮时,服务器不会停留在示例:7456/nix/sign_in 并重定向到示例:7456/sign_in。
如何修复重定向并保留示例:7456/nix/ - 在代理通行证上。
我使用 Nginx、Passenger 和 Ruby on Rails。
nginx - Nginx proxy_pass,定义不匹配的情况?
我有 2 个带有proxy_pass的文件:
和
他们都工作正常。
现在,如果我通过另一个域名(在针对相同 IP 地址的 DNS 服务器上定义)访问该服务器,例如。www.domain3.fr,而不是 404,我得到了与 www.domain2.fr 相同的结果!
我猜是因为最后一个location /
,但是如果域名不一样我怎么能做404错误server_name
呢?
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
我不知道这是否是解决我的问题的最佳方法,但如果您有任何其他建议,我愿意。
提前致谢。
我自己的答案
我无法回答自己的问题,所以这是我设法解决的答案。
这也将强制使用最后的斜杠。
如果您不想强制使用尾部斜杠,只需删除该位置的最后一个斜杠
regex - 您可以使用 ProxyPassMatch 更改 URL 的查询字符串吗?
我不确定我正在尝试做的事情是否有效,所以请多多包涵。
我正在尝试通过反向代理设置使用 ProxyMassMatch (Apache) 指令来更改通过我的本地主机访问时出现在给定页面上的 URL 并删除“sid”参数。我知道这个特殊的正则表达式只说明参数不是第一个 cgi arg 时,但我遇到的更大问题是这似乎根本不起作用,所以我想也许我不理解 ProxyPassMatch,尽管阅读文档多次。
为了形象化,如果这有效,我可以将鼠标悬停在我的“本地主机”页面上的 url 上,而不是:
我会看见:
我已经使用 mod_rewrite 成功删除了这个 cgi arg,但是由于其他机制,我被要求使用 ProxyPassMatch 执行此操作,因此实际页面上的 URL 不会显示“sid”参数。有没有人对此有任何见解?
这是我在 .conf 文件中尝试过的众多变体之一。
apache - 如何将 LocationMatch 和 ProxyPassMatch 结合起来?
我正在内部机器上设置 Apache 2.4.6 服务器以进行测试。Apache 服务器应该做的一件事是充当在 localhost:3030 上找到的另一台服务器的反向代理。
localhost:3030 上的服务器在其第一个路径级别上需要几个数据集名称中的一个(目前,该集合仅包含 dataset experimental
,但稍后将添加更多),所以我试图从请求的路径。
在我的虚拟主机中,这有效:
对于其他数据集,我可以将其复制并替换experimental
为其他数据集名称。显然,这会导致大量代码重复/冗余,这既是错误的来源,也是维护的恐惧。
因此,我想变得更加灵活,并在一个这样的块中处理多个数据集。这应该可以通过LocationMatch
指令来实现。
如this comment和this page所示,在块内使用时我需要替换。本质上,文档声明相同:ProxyPass
ProxyPassMatch
LocationMatch
在 LocationMatch 部分中也会发生同样的情况,但是 ProxyPass 不会这样解释正则表达式,因此有必要在这种情况下使用 ProxyPassMatch。
从 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 上的路径时调用。
在 LocationMatch 部分中使用时,第一个参数被省略,正则表达式从 LocationMatch 中获取。
但是,文中并没有费心提供如何结合LocationMatch
和的示例ProxyPassMatch
。我究竟做错了什么?
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 传递每个请求,这似乎不是最理想的
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?
ssl - proxy_pass 在 nginx 中使用 ssl 上游
我正在尝试配置一个子域以将请求代理到我无法控制的其他服务器。一位朋友运行该服务器,他使用自己的 CA 来避免为 ssl 证书付费。我尝试将我的配置代理到我自己的一个子域,运行有效的 ssl 证书,它运行良好,但是一旦我代理他和他的“无效”ssl 证书,nginx 就会不断询问我的凭据。
这是我的配置:
我在日志中没有任何错误。我可以浏览/friend之外的所有内容,它可以很好地进行身份验证,但是一旦我进入/friend,身份验证就会一直弹出,就像我输入了错误的密码一样。我知道我的 base64 编码是有效的,我通过在我的一个子域上复制相同的身份验证对其进行了测试,它运行良好,所以我能想到的唯一解释是 nginx 不喜欢他的证书。
是否有一些我会错过的配置让我信任他的 CA?或者只是为了禁用验证,数据根本不合理,即使通过http也可以,但他不想在他的服务器上配置它。所以禁用验证对我来说是一个足够好的解决方案。
谢谢