问题标签 [mod-proxy-html]
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 - 具有 SSL 和 url 编码的反向代理,路径更改
环境 http://etrafficcontrol.com/misc/proxy.png
我有两个应用程序。一个是托管在 AWS 上的电子商务站点(在 LAMP 上运行的 Drupal 7),另一个是 IIS-6 上的 ASP 结帐系统,位于我们公司内部,需要 SSL。
目前,我们忍受了我们的客户被转发到另一个域进行结账的情况——有点像 ebay 和 PayPal 发生的情况。但这会导致网站跟踪代码出现困难,并且让购物者离开电子商务网站进行结账时感觉有些不对劲。
主要问题是我们使用 Google 广告系列,因此我们希望跟踪从广告到 domain-1 的转化以及在 domain-1 上的丰富内容,但实际销售发生在 domain-2 结帐时。
我没有将访问者从 www.domain1.com/cart 发送到 domain2.com/miscX,而是尝试设置 ProxyPass 和 ProxyPassReverse,以便将它们发送到 www.domain1.com/shop/miscX。
App1 (drupal) 在 domain1.com/* 中,.htaccess 的东西绕过 Drupal 的设计来拦截一切。“杂项”路径来自我重定向到子目录,然后从那里代理的事实。当代理页面呈现时,它们有一些到 /miscX 的硬编码路径,并且在重定向期间没有为这些路径做出特殊规定,我最终得到 /miscX/(而不是 /shop/miscX/ 它将遵循代理)和这会导致缺少 css、js 等。
注意:我们的企业客户可以直接登录 domain2.com,所以我想保持该门户不变。
下面,local-d7 是 domain1 服务器的本地测试实例。对代理的测试表明,这个概念适用于 SSL。
我几乎可以正常工作,但似乎 URL 编码的参数正在丢失(即使查询字符串没问题)。当我介绍代理时,server2 看不到编码参数(它是一个专门的应用程序,我不知道如何查看 IIS 正在接收的内容)。当我以没有编码参数的方式通过服务器 1 上的 apache 路由 domain2 测试门户登录时,登录有效。
实际上,我正在尝试
- 反向代理
- 更改路径(将应用程序运行在 domain-2 上的 / 中,并暴露到 Domain-1 上的子目录“/shop”中
- 支持 SSL
- 代理 Apache 后面的 IIS 服务器
- 尽量不要修改 IIS 服务器,以便它可以继续被原来的 domain-2.com URL 使用,并且
- 在我 [可能] 对 Apache 的配置控制有限的托管服务器上执行此操作。(目前在 XAMPP 上测试)。
除了这里显示的内容之外,我还尝试了各种事情,包括重写规则、重定向等。我只是在 mod_proxy 或 mod_rewrite 等方面完全没有经验。但在我看来,这种代理安排应该是可以做一些工作并可能修复服务器 SSL 证书。
建议? - 谢谢
vhosts.conf
.htaccess
macos - 为什么从 mod_proxy_http 切换到 mod_jk 会阻止连接到 Tomcat?
我有通过mod_jk
或连接到 Tomcat 的 HTTP Apache 服务器mod_proxy_http
。到目前为止,连接方式mod_proxy_http
工作正常,但连接方式mod_jk
导致找不到路径错误,例如:
在此服务器上找不到请求的 URL /cm/login.ep。
apache error_log 中对应的错误是:
[2014 年 5 月 24 日星期六 22:19:47] [错误] [客户端 127.0.0.1] 文件不存在:/Library/WebServer/Documents/cm
httpd.conf 中不使用 VirtualHost 定义。
mod_jk.log
没有显示任何错误,从workers.properties
文件中找到了工作人员。日志说:
[2014 年 5 月 23 日星期五 17:19:25] [758:140735273992976] [信息] init_jk::mod_jk.c (3383): mod_jk/1.2.40 已初始化
mod_proxy_http 和 mod_jk 的连接配置如下:
以下是mod_proxy_http
设置:
以下是mod_jk
设置:
并且workers.properties
是:
apache - Apache proxypass 和多语言域
我在 domain.com 上有一个网站,该网站在 URL 中包含多语言内容,例如:
- domain.com/en 英文版
- domain.com/de 德语
- domain.com/it 意大利语
等等这些不是真正的目录 - 这些只是重写为 /index.php?lang=... 所以 domain.com/lang/one/two/three 被重写为 /index.php?lang=$1&path= 2美元
它还有 domain.com/assets 目录,其中包含所有常见文件(css、图像等)
现在我想改变每种语言都有自己的域,我认为可以通过在 Apache 中使用 mod_proxy、mod_proxy_http 和 mod_proxy_html 来管理。我想要实现的是,如果用户访问:
- www.domain.com 他从 domain.com/en 获取内容
- www.domain.de 他从 domain.com/de 获取内容
- www.domain.it 他从 domain.com/it 获取内容
如果他从任何域(.com、.de、.it)访问 /assets 目录,他将从 domain.com/assets 获取内容。此外,如果用户访问 URL,例如 www.domain.de/something,他应该从 www.domain.com/de/something 接收内容
另一件事是在输出之前必须重写的 URL,例如浏览 domain.de 的用户根本不会去 domain.com ......
这可能吗?否则,我们将不得不重新编程整个 CMS 以使用每种语言的不同域......
apache - 加载 Apache2 mod_xml2enc 时未定义的符号
我很沮丧在 CentOS 5 机器上将反向代理相关模块安装到 Apache2 HTTP 服务器。由于它是旧版本的 Apache2 服务器,我不得不使用 Apache 工具“apxs”从源代码编译模块。通过“apxs”安装模块时,我没有收到任何警告或错误,但在尝试重新启动 Apache 服务器时出现运行时错误。
以下是更多细节。
由于历史原因,我无法将它们中的任何一个升级到更新版本来解决问题。
该操作系统最初缺少libxml2,我通过yum成功安装了它,没有任何问题。我下载了 mod_proxy_html 的源文件,包括 1) mod_xml2enc.c、2) mod_proxy_html.h 和 3) mod_proxy_html.c
我使用以下命令首先安装 mod_xml2enc,然后安装 mod_proxy_html。
两者看起来都不错,并显示了如下输出:
但是,当我尝试重新启动服务器时,出现了我放在顶部的错误消息。
我已经尝试了很多方法来解决这个问题,但是没有任何效果。也许值得注意的是,我采取了在 CentOS 5.11 32 位机器上安装相同模块的确切步骤,并且完全没有问题。这两台机器的唯一区别就是一台是 32 位的,另一台是 64 位的。
希望有人知道如何解决这个问题。
提前非常感谢。
sharepoint-2010 - Apache 反向代理擦除
这是我在此的头一篇博文。
我已经在论坛中搜索了相关问题,但似乎没有一个结果可以解决我的问题。
设置是:
在内部客户网络的 IIS 7 上部署了 MS Sharepoint 2010。这似乎在内部网络中表现正确。
为了公开这项服务,我在 DMZ 上的 Red Hat EL 6.0 上运行了一个 apache 2.2 服务器。apache 有一个配置为反向代理的虚拟主机,以允许来自外部的连接。
由于我发现了一些链接问题,我不得不编译和集成 mod_proxy_html 模块来解析这些链接。
问题是我在从外部(通过 apache)访问时看到奇怪的字符。这是由于 Apache 擦除了一个 html 元标记:
从 MZ 内部,html 代码开始:
但是,当从外部访问时,html 代码会启动:
缺少标记:meta http-equiv="Content-type" content="text/html; charset=utf-8"。
我已经尝试添加到我的 httpd.conf:
添加默认字符集 utf-8
ProxyHTMLCharsetOut utf-8
ProxyHTMLMeta 开启
virtualhost配置如下(130.177.97.99是属于后端的IP):
任何帮助,将不胜感激。
谢谢。
胡安
apache - Apache反向代理将浏览器直接发送到后端
(主要问题底部的更新,下面可能是多余的细节)
我遇到了一个有趣的问题,Apache 没有按预期进行反向代理。
基本上,发生的事情是当我点击我的网站上指向相对路径的链接时/app1
,我希望它的 URLexternal.company.ca/app1
包含来自internal.company.ca/some_app
. 相反,浏览器将直接转到internal.company.ca/some_app
.
没有 302 或任何东西,就在那儿。这对我来说很奇怪,因为internal.company.ca
除了反向代理配置之外,配置中的任何地方都没有提到,所以我根本不知道浏览器是如何学习域的。
这是从客户端(浏览器)的角度捕获的 Fiddler 捕获,显示了我单击指向的链接后的行为/app1
(您必须相信我,绿色名称是external.company.ca
,黑色名称是internal.company.com
,路径是/some_app/blahblah
):
此后发生的一切都是用internal.company.com
. 当然,这在生产中根本行不通。
以下是供考虑的 Apache 配置文件的(截断)版本:
有一次,我认为 cookie 可能会丢东西,因为它们位于不同的域下(前面是 .ca,后面是 .com),但我相信如果反向代理工作正常,浏览器就不会更明智了. 有人看到上面有什么问题吗?
更新
我找到了罪魁祸首:
<script type="text/javascript">window.location.assign('https://internal.company.com/app1/login?redirectUrl=' + encodeURIComponent(window.location.pathname + window.location.hash));</script>
问题是,如何使用 Apache 重写这个绝对 URL?我知道 mod_proxy_html 修改元素属性(例如href
在a
元素中),但它可以重写元素本身的任意数据吗?
内部应用程序由供应商提供,尽管可以对其进行修改以删除上述代码,但我现在更愿意远离该路径,看看是否有替代方案。
apache - 使用 ProxyHTMLURLMap 正确完成相对 url?
例如 psweb1.example.com:8002/main/login/login.jsp 需要重定向到 psweb1.example.com/demo1/main/login/login.jsp
并且 psweb1.example.com:8002/content/* 需要指向 psweb1.example.com/demo1/content/*
我无法重定向正确的相对路径。任何帮助表示赞赏。
这是我在 httpd.conf 中的配置
php - 子域映射到子目录
我有一个 Web 应用程序,它需要为每个公司提供动态子域。该网站也有 SSL。我在 Ubuntu VPS 上使用 apache。我所做的是我做了如下虚拟主机设置
将流量定向到 SSL 是可以的。
所以我现在需要做的是我的网络根目录中有一个文件夹“/app”。我希望所有子域都指向该特定文件夹并在地址栏上显示相同的 url。
我在 php 中启用了 http_proxy 模块并制作了这个 .htaccess
当我访问“ https://test.domain.com ”时,它会将其重定向到“ https://domain.com/app/index.php ”。我知道为什么会发生这种情况,因为当 htaccess 重定向发生在“ http://domain.com/app/index.php ”时,我的虚拟主机配置看到一个非 SSL 请求,并将请求重定向到与 SSL 相同的地址。所以我把 .htaccess 改成了这个
我在重写规则中加入了“https”。当我再次访问“ https://test.domain.com ”时,它给了我这个错误。
最后我想要的是
有人可以帮我吗
谢谢你。
json - Apache 反向代理将 JSON 响应包装在 HTML 中
如果这个问题之前已经被问过(找不到任何类似的问题),或者只是非常明显,我只是一个问这个问题的白痴,请提前道歉。
我正在使用 Apache 2.4 反向代理几个内部页面和 Web 应用程序。我启用了很多代理模块,包括 mod_proxy_html 以根据需要重写 HTML。代理的每个页面或 Web 应用程序都在块内。
一般来说,这很好用。链接工作,资源加载,他们应该等等等等。但是其中一些 Web 应用程序使用 AJAX 来实现一些不错的 UX 功能,这些 AJAX 请求中的大多数都会访问代理的 JSON 端点。
我的问题是:任何代理的 JSON 响应都包含在
我不知道这些 HTML 标签是从哪里来的,我试图摆脱它们的一切都没有奏效。我已经尝试过 LocationMatch 块并明确设置 ProxyHTMLEnable Off 并删除替代输出过滤器。
有没有办法明确禁用特定 URL 的响应正文重写/替换?
apache - 在 CentOS 7 上设置 mod_proxy_html
我正在尝试在我的 Web 服务器上进行一些测试,以确保反向代理在将其置于实时环境之前按预期工作,但我遇到了 mod_proxy 和 mod_proxy_html 的一些问题。
我有 2 个虚拟主机,1 个在端口 80 上,1 个在端口 8080 上。我的目标是让 www.example.com/path/ 的传入请求进入端口 80,并反向代理到端口 8080。
这是我的虚拟主机设置:
我的 /var/www/html/test 有 2 个文件 index.html 和 test.html
test.html 内容是:
访问 www.example.com/path/ 成功被代理并重定向到 www.example.com/path/test.html,但页面上的链接仍然指向 127.0.0.1。
httpd -M 确实报告加载 proxy_module 和 proxy_html_module
我也尝试过手动将 LoadModule 添加到 http.conf
关于为什么它不能正常工作的任何想法?我是否配置错误?