问题标签 [mod-proxy-ajp]

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 投票
1 回答
576 浏览

apache - 使用 Apache Web 服务器对应用服务器进行负载平衡

我们当前的设置有 2 个负载均衡的 Web 服务器,它们将它们的应用程序请求指向 2 个 Web 服务器的负载均衡器

我们现在使用的第 3 方应用程序建议我们从应用程序部分的硬件 LB 切换到软件。

(注意:来自 Apache 的任何信息都将被削减一点,以删除 IP、目录等。这只是妄想症)

我添加了一个负载平衡配置,非常精简,看起来像这样

如您所见,我们正在平衡 ajp 请求。在此之后,网站的各个部分都有大量的 ProxyPass 规则。

我有这个由主 httpd.conf 加载

在那个 httpd.conf 中,我按此顺序加载了以下模块

问题是,当我把它全部到位并尝试重新启动 httpd 时,它会抛出这个:

当然,现在所有服务器请求都抛出 500 并且在 error.log 中有一条错误消息:

我不明白为什么会这样。根据研究,只有在 mod_proxy 之前调用 mod_proxy_ajp 时才会引发错误。因为这是最后一件事,所以一切都应该事先加载。

0 投票
0 回答
1044 浏览

apache - 使用 mod_proxy_ajp,如何设置“特殊”AJP 属性?

我已经设置了一个Apache Web Server 2.4作为Apache Tomcat 7的代理,通过AJP协议( ​​Apache 端的mod_proxy_ajp和 Tomcat 端的 AJP 连接器)进行通信。一切都适用于基本功能。

现在,我正在寻找设置一些特定的 AJP 属性,但不能完全让它工作......


查看mod_proxy_ajp页面 ( http://httpd.apache.org/docs/current/mod/mod_proxy_ajp.html ),在Request Packet Structure部分下,我看到了属性列表。这些属性包括remote_userssl_cert 之类的(代码值分别为0x030x07)。还有一个名为req_attribute的“其他所有”属性,代码值为0x0A,可用于设置 AJP 请求中的任意属性。

此外,在同一页面的“环境变量”部分下,它指出以下内容:

名称带有前缀 AJP_ 的环境变量将作为 AJP 请求属性转发到源服务器(从密钥名称中删除 AJP_ 前缀)。

这看起来很简单,实际上,我可以通过设置名为“AJP_doug-attribute”的 Apache 环境变量并分配相关值来轻松设置任意 AJP 属性,例如“doug-attribute”。这样做之后,我可以使用 Wireshark 分析流量,并在剖析的 AJP 块中看到“doug-attribute”字段,前缀为 0x0A 的十六进制值(上面列出的“req_attribute”类型)。到目前为止,一切都很好。


现在我想尝试设置ssl_cert属性。以同样的方式,我设置了一个名为“AJP_ssl_cert”的环境变量。这样做,它确实出现在 Wireshark 中,但带有前缀代码“0x0A”。此外,我想要读取“javax.servlet.request.x509certificate”的 Java 应用程序找不到证书。

但是,我还注意到网站列出的 Wireshark 捕获中的其他一些属性,例如ssl_cipherssl_key_size。但在捕获中,它们显示为“SSL-Cipher”和“SSL-Key-Size”(并具有适当的“0x08”和“0x0B”前缀代码)。因此,我尝试再次设置 cert 属性,这次设置为“SSL-Cert”,但得到的结果与以前相同。

为了比较,我将 Apache 配置更改为需要客户端证书,然后在访问相关网页时在浏览器中提供一个。此时,我查看了Wireshark的抓包,果然,现在有了一个名为“SSL-Cert”的属性,代码为“0x07”,我在Tomcat中的web应用程序成功找到了证书。

有什么方法可以手动设置 mod_proxy_ajp 页面上列出的属性,或者模块处理它们的方式与其他任意请求属性(如“doug-attribute”)不同吗?我觉得这里一定有我想念的东西。


作为一些背景,我尝试这样做的原因是我有一个配置,其中多个 Apache Web 服务器相互代理,最后,一个 Apache Web 服务器通过 AJP 代理到 Tomcat 实例。所有 Apache Web 服务器都使用 SSL 并需要客户端证书。只需一台 Apache 服务器,Tomcat 就可以很好地接收用户的证书,而无需我进行任何特殊配置。但是,如果有多个,它最终会接收先前 Apache 代理的服务器证书(使用 SSLProxyMachineCertificateFile 指令在该机器上设置)。

我希望做的是将原始用户的证书放入中间代理请求的标头中,然后在后端的 AJP 属性中手动设置该证书,以便 Tomcat 中的 Web 应用程序可以读取该证书并将其用于执行其授权内容(这部分已经确定,否则我只需将证书添加为标头并让 Java 应用程序读取标头)。

编辑:当然,如果有更简单的方法来完成通过代理链传递用户证书,我会很高兴听到它!:)

0 投票
1 回答
206 浏览

jsp - Servlet + mod-rewrite:HttpSession.getAttribute() 返回 null

我有一个在 Tomcat 上运行的 Servlet + JSP 应用程序。我使用 mod-ajp 使用这些重写规则在 Tomcat 上重定向 apache:

但是,当我使用这些重写规则时,它适用于会话:

HttpSession.getAttribute("nameOfMyAttribute") 返回 null。我看起来会话被“绑定”到某种通过重写规则改变的主目录。是否可以强制会话忽略子目录?我在那里错过了什么吗?

0 投票
1 回答
328 浏览

apache - 带有 mod_proxy_ajp 的 Atmosphere 2.1.2 + apache 2.4.6 无法将请求转发到 Tomcat 7

我有带有 mod_proxy_ajp 的 Apache 2.4 来将 REST 请求转发到 Tomcat 7。除了我使用的是 Atmosphere 2.1.2 并且 Atmosphere 调用无法到达 Tomcat 之外,一切正常。我知道 Apache 可以使用 websockets(Nginx 和 HAProxy 等)来替代它,但我想知道是否有办法让它与 Apache 一起使用?这是我在 httpd.conf 中的 VirtualHost 定义

有什么建议么?

0 投票
1 回答
328 浏览

apache - 从 Apache 到 Tomcat 的子域 ajp 代理

我有一个指向服务器的域 domain.com。现在我有一个子域 sub.domain.com 指向另一个运行 Apache 和 Tomcat 的服务器。

我在 httpd.conf 中配置了以下内容:

在 Tomcats server.xml 中:

但是当我转到 sub.domain.com 时,它会转到 otherdomain.com 并向我显示这个声明如下的 php 网站:

只有当我将 domain.com 和 sub.domain.com 虚拟主机声明中的端口更改为类似 8001 时,它才能工作。然后当我转到 sub.domain.com:8001 时,它会显示我的 tomcat 应用程序(ROOT.战争)。

所以我的问题是:如果默认端口 80 不起作用,会出现什么问题?我找不到任何导致这种情况的配置,但我可能遗漏了什么?

0 投票
1 回答
1382 浏览

linux - Using Mod_proxy Redhat 6 Apache 2.2.15 to Tomcat 7 multiple java webapps issue

I have an apache 2.2.15 front end trying to pass code to tomcat7 with mod_proxy to fire off two different webapps with different base paths. I think I'm close, but I'm still not getting a web page returned. I'm getting the 404 requested resource not available. I am sure hoping this is something simple, but after a week and a half of banging my head against this wall, I have become log blind. Posting in hopes someone can see what I can't, or can correct some fundamental misunderstanding I might be having about how this can work.

BMC Remedy arsys with a http://rmdy-mtr-p1.domain.com/arsys/ port 8080. webapp base is located at /opt/local/bmc/ARSystem/midtier/

http://rmd-mtr-p1.domain.com/kinetic/ with a base at: /opt/apache/tomcat7.0/webapps/kinetic/ port 8009.

httpd.conf:

server.xml file:

In my catalina.out log I am seeing several different issues. I believe that the:

Is because the connection between the midtier and the ars server hasn't been set up yet. The whole log since I restarted it this morning and tested yet again is:

I have tried a bunch of things. I tried doing this with mod_ajp first, because I'm more used to it. But it's better suited for situations like app1.company.com and app2.company.com and NOT company.com/app1 and company.com/app2. I could make any ONE work, but not two or three (my ultimate goal).

Speaking of situations, the third web app deployed in that webapps folder is kineticTask, and I don't know why it is firing off in the log files when I have no mention of it in my current config. I want to get these two working first and then add it....so I don't know why that's coming up at all.

The /var/log/httpd/error.log:

0 投票
0 回答
177 浏览

tomcat7 - 如何将 Apache 2.4 配置为指向我的 webapp 的域名

我有一个使用在 Tomcat 7 中运行的 Struts2 MVC 框架在 Eclipse 下开发的战争文件。

我已经通过 mod_proxy_ajp 在 Apache 2.4.7 中使用了 tomcat。

因此,我启用了 mod_proxy 和 mod_proxy_ajp,并在我默认启用的站点配置文件 (/etc/apache2/sites-enabled/000-default.conf) 中添加了以下内容:

当我放入浏览器时,这很好用:

本地主机/我的应用程序,

Apache2 将请求重定向到 Tomcat,然后再重定向到 my-app,并且 localhost 中对 Apache2 的所有请求都重定向到 Tomcat。

我的问题是,当用户在浏览器中介绍我的域名时,如何使用此配置将我的域名(我有一个域名和一个静态 IP 地址)指向 my-app?

我在 Xubuntu 14.04 LTS、Apache 2.4.7、Tomcat 7.0.52 下。

0 投票
1 回答
2388 浏览

amazon-elb - 带有 ajp:8009 的 Amazon 负载均衡器粘性会话

我们为两个 tomcat(tomcat1 和 tomcat2)的 JSESSIONID cookie 配置了带有粘性会话的 ELB(流程是 - Apache Http Server - ELB - tomcats)

带有端口 8009 的 AJP 协议已在 tomcat 端配置,因为从 AWS ELB 没有 AJP 选项,我们已经配置了 tcp:8009

所以 Apache httpd.conf 条目是,(xxx.amazonaws.com 是 ELB 名称)

BalancerMember ajp://xxx.amazonaws.com:8009

不知何故,粘性会话不起作用,http请求被发送到两个tomcat服务器。是因为ELB端的协议(tcp:8009)吗?我们不确定这里缺少什么,需要帮助!!

0 投票
1 回答
968 浏览

apache - 如何配置 mod_proxy_ajp 以支持 CORS?

我正在使用 mod_proxy_ajp 模块运行 Apache。Apache 成功地将请求反向代理到 tomcat。配置在文件 /etc/httpd/conf.d/proxy_ajp.conf 中指定

是否可以配置 mod_proxy_ajp 模块以将标头 Access-Control-Allow-Origin 设置为“*”?如果是这样,您将如何更新 proxy_ajp.conf 以设置标头?

谢谢,

弥敦道

0 投票
0 回答
238 浏览

mod-proxy - tcpsndbuf 导致最大 CPU 负载

我确实运行了一个 Web 应用程序,我将其剥离到最大值以避免高 tcpsndbuf 值。几天后仍然会到达 tcpsndbuf 上的失败,并且流量非常非常少。

我最初认为这是此线程中描述的应用程序容器问题。

tcpsndbuf 值不断上升。似乎缓冲区值从未完全释放。因此,它会不断增加,直到突破限制并要求它达到 100% CPU 油门。

但是,在排除了休眠配置、mysql 驱动程序错误等不同来源之后,我想关注由 Parallel Plesk/Power Panel 和 apache proxy_mod 管理的 openvz。

我相信它的原因是/usr/sbin/apache2 -k start进程列表中列出了许多进程(Parallels Power Panel,进程)

我使用 proxy_mod 将端口 80 路由到我的应用程序服务器,该服务器位于不同的端口但同一主机上。

如何详细分析套接字状态?例如,哪个缓冲区被哪个应用程序锁定,何时分配?我可以看到 proxy_mod 连接吗?这种类型的数据可用吗?非常欢迎任何其他关于 tcpsndbuf 引发最大 CPU 负载的提示。