Articles of mod proxy

Apache mod_proxy + xinetdredirect到防火墙主机+期待JNLP回到客户端

我的目标是相当典型的,所以我希望别人可能以前实施过类似的设置。 外部客户端Foo将连接到Bar,Bar是一个具有适当防火墙例外的服务器,因此可见到应用服务器Baz(192.168.1.5)所在的内部networking192.168.1.0/24。 Baz通过JNLP提供了一个Java应用程序。 当前设置 xinetd在端口8080上的Bar上运行,通过防火墙redirect到启动JNLP的内部系统Baz端口443,并且被反馈到客户端Foo,在那里Java应用程序踢得很好,一切都很好。 Foo客户端在JNLP文件上的交互确实使用了由xinetd“路由”的同一个连接,所以没有使用这个设置的不对称路由或者任何讨厌的事情。 只是没有保护的应用程序,这是不可取的。 xinetdconfiguration: service baz-app { disable = no type = UNLISTED flag = IPv4 socket_type = stream wait = no user = root port = 80 #Not functional yet. #only_from = 127.0.0.1 redirect = 192.168.1.5 443 log_on_failure += USERID } 期望的设置 一些身份validation来保护应用程序。 我们已经成功实施了以下内容: 使用Kerberos主体的Apache + mod_ssl + mod_proxy + […]

如何使用Apache mod_proxy将代理特定的端口逆向转换到防火墙后的另一台服务器

我有两个Web服务器,一个Apache 2和另一个IIS 8,都在防火墙后面的局域网中。 我在防火墙上打开了端口80,443和8080-8088。 我有一个指向我的防火墙的外部托pipe的DNS Alogging,以及将这些端口redirect到Apache服务器的防火墙规则。 我还在局域网上有一个DNSlogging,将Alogging指向防火墙内的本地地址。 (即在防火墙外,www.example.com指向1.2.3.4,但在同一地址指向192.168.1.1)。 我希望将Apache服务器上的端口8080-8084redirect到IIS服务器,其余的端口(80,443,8085-8088)正常处理。 所有的stream量都是HTTP(或者将来可能需要HTTPS),所以即使端口号是非标准的,所有的stream量都是正常的网站的东西。 例如,我们假设如下: 公共主机名:www.example.com 公共IP地址:1.2.3.4 Apache服务器的LAN主机名(www.example.com指向的地方):apache.example.local 局域网上Apache服务器的IP地址:192.168.1.1 IIS服务器的局域网主机名(不能从局域网外访问):iis.example.local 局域网上IIS服务器的IP地址:192.168.1.2 我试图为这些场景设置一个代理规则: h ttp://www.example.com/指向Apache的默认网站( apache:80 / )。 h ttps://www.example.com/指向Apache的SSL网站( apache:443 / ) h ttp ://www.example.com: 8080 /点到IIS默认网站( iis:80 / ) h ttps ://www.example.com: 8080 /点到IIS的SSL网站( iis: 443 / ) – 我想不出如何做到这一点,所以我指出了这个问题:http://www.example .com: 8083 / ,虽然我宁愿按预期工作 h ttp://www.example.com:8081 / wiki […]

“ajp_read_header:ajp_ilink_receive失败”

我们在Tomcat 7.0.33之前有Apache 2.2.24。 我们使用APR / nativeconfiguration的AJP连接器。 我最近注意到Apache访问日志中有500个错误,对一个特定资源的一小部分(0.3%)请求。 对于这500个响应中的每一个,Apache错误日志中都有一对相应的错误行 [Wed Mar 06 04:07:42 2013] [error] ajp_read_header: ajp_ilink_receive failed [Wed Mar 06 04:07:42 2013] [error] (70007)The timeout specified has expired: proxy: read response failed from (null) (*) logging错误的时间在logging请求的时间之后5:06和5:07分钟之间。 匹配设置的Timeout 300指令。 没有任何东西logging在Tomcat的访问日志,所以我假设请求永远不会到达那里。 据推测,资源存在一些性能问题(它进行了数据库更新,负载相当高),但我更关心的是了解Apache和Tomcat之间的通信。 在什么时候请求超时? (连接,阅读等) 我有什么select来监控ajp连接的数量? 我有什么选项来configurationApache和Tomcat来改善这种情况 Apache使用带有[proxy,last]标志的重写规则进行configuration。 Tomcat连接器看起来像 <Connector port="8014" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" /> 就像我之前所说的,我将分别解决Tomcat资源上的瓶颈问题。

在Windows中设置Apache HTTP服务器作为代理访问另一个域

我知道这应该是非常基础和理论上的简单,但我需要完成这个任务,我是新来的,由于某种原因,我找不到一个适合我的例子。 我在Windows 8中运行apache 2.2。我需要访问一个网站,让我们称之为x.com,通过我的代理。 原因是我需要在iframe中显示它,并以编程方式login,为此我需要使用JavaScript。 这是通过跨域的Ajax安全限制来防止的。 通过代理网站,我可以做到这一点。 我已经安装了Apache http服务器。 取消注释以下行 LoadModule proxy_module modules/mod_proxy.so 在文件“httpd.conf”中,并用以下命令覆盖文件conf \ extra \ httpd-vhosts.conf: NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/docs/dummy-host.localhost" ServerName 127.0.0.1:80 ProxyRequests off ProxyPass /feature http://x.com/ ProxyPassReverse /feature https://x.com/ ProxyPassReverseCookieDomain x.com localhost ErrorLog "logs/dummy-host.localhost-error.log" CustomLog "logs/dummy-host.localhost-access.log" common <Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/docs/dummy-host.localhost"> AllowOverride […]

透明地使用Apache的代理请求

我正在使用Apache透明地使用mod_proxy将URL转发到另一个URL。 为了说明我在做什么,这是我的Apacheconfiguration文件: <VirtualHost *:80> ServerName myurl.mysite.com SSLProxyEngine On ProxyPass / http://www.whatismyip.com/ ProxyPassReverse / http://www.whatismyip.com/ </VirtualHost> 我使用“whatismyip.com”网站,因为它似乎检测代理,所以这是一个很好的testing。 启用SSLProxyEngine是因为我的目标站点使用SSL( ProxyPass指令中的一个)。 有了这个简单的configuration,大多数情况下工作正常 但我不希望目标网站检测到它正在通过代理访问。 目标网站应该“认为”它是由Apache服务器(代理)直接访问,并且只能通过它。 为什么? 出于某种原因,我不知道,我可以访问终点站点,但无法login,当我使用代理。 终点运行传统的软件,所以更改不是一个选项。 我想终点是做一些检查,或者可能是使用一些导致这个(直接访问导致没有问题)的参数。 我的解决scheme是做一些透明的访问。

Apache作为dynamicIP的代理fowarder

我正在寻找networking,但我不知道如何去做我正在寻找的东西。 所以我正在寻找的是一个代理,它将根据我已经放在url(GET)的IP地址前进HTTP查询。 所以,例如: 我请求: http://host/query/IP_A它应该做的是:ME => GET HTTP myhost / query / IP_A => GET IP_A ===> GET IP查询到IP_A并返回给发件人! 我一直在阅读proxypass,reverseproxy,proxymatch和mod_rewrite …但我不明白为什么它不工作! 而我没有日志….这是不是很酷,当debugging时间来了! 🙁 这是我的实际configuration: <VirtualHost *:80> ServerName myServer DocumentRoot /home/me/www/htdocs # RewriteCond ^.*/query/(.*) # RewriteRule (.*) http://$1 [P] ProxyPassMatch ^.*/query/(.*) http://$1 ErrorLog logs/me-error_log CustomLog logs/me-access_log debug </VirtualHost> 这是一个静态工作的例子: ProxyPass / http://IP_A ProxyPassReverse / http://IP_A 所以,当我访问networking服务器,它直接到IP,并返回我的HTTP响应。 […]

Apache2 mod_proxy_fcgi在每个请求之后closures一个连接

我设置mod_proxy_fcgi做与Apache和php-fpm 。 如果我正确读取FCGI规范,则服务器之间通信的典型stream程是在Web服务器和FastCGI服务器处于活动状态时保持打开状态。 但是我观察到不同的行为。 Apache似乎在每次请求后closures连接。 这里是httpd.conf的相关部分: LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so … ProxyPass / fcgi://127.0.0.1:9000/usr/local/apache2/htdocs/ ttl=120 ProxyErrorOverride on 我将LogLevel设置为debug 。 当我在循环中运行一些请求时(在请求之间很less有时间,所以我真的不希望任何超时),我得到以下日志: [Mon Oct 07 12:43:49.338770 2013] [authz_core:debug] [pid 29880:tid 140162482755328] mod_authz_core.c(828): [client 127.0.0.1:36279] AH01628: authorization result: granted (no directives) [Mon Oct 07 12:43:49.338793 2013] [proxy_fcgi:debug] [pid 29880:tid 140162482755328] mod_proxy_fcgi.c(120): [client 127.0.0.1:36279] AH01060: set r->filename […]

HTML2redirect问题与Apache2

我在Ubuntu上的Apache服务器上遇到ProxyPass的问题。 我configuration了Apache来处理我的服务器上的虚拟主机。 有一个应用程序在服务器上运行,并使用端口8001 8002.我需要做一些事情,如www.example.com/demo/origin显示我将看到的内容,当我访问www.example.com:8000 。 要显示的内容是一大堆HTML页面。 这是有问题的虚拟主机configuration部分 ProxyPass /demo/vader http://www.example.com:8001/ ProxyPassReverse /demo/vader http://www.example:8001/ ProxyPass /demo/skywalker http://www.example.com:8002/ ProxyPassReverse /demo/skywalker http://www.example.com:8002/ 现在当我访问example.com/demo/skywalker ,我会看到8002端口的第一页,比如说login.html页面。 第二个应该是www.example.com/demo/skywalker/userAction.html ,而服务器显示www.example.com:8000/login.html 。 在错误日志中,我看到如下所示: [Mon Nov 11 18:01:20 2013] [debug] mod_proxy_http.c(1850): proxy: HTTP: FILE NOT FOUND /htdocs/js/demo.72fbff3c9a97f15a4fff28e19b0de909.min.js 我没有任何文件夹htdocs在系统中。 这只是查看.html页面时的一个问题。 否则,不会出现这样的问题。 当我访问localhost:8001它将显示任何和所有内容没有任何错误或问题。 www.example.com/demo/skywalker会显示一个单独的网页 www.example.com/demo/origin显示不同的网页 和 www.example.com/demo/vader会显示不同的网页。 我也尝试过使用另一种types的组合, <Location /demo/origin/> ProxyPass http://localhost:8000/ ProxyPassReverse http://localhost:8000/ ProxyHTMLURLMap http://localhost:8000/ […]

带有ProxyRemote绝对URL的mod_proxy – 保留相对URL

ProxyPass / https://example.com/ ProxyRemote https://example.com/ http://proxy:8080 安装程序通过代理工作,但使用mod_firehose我看到mod_proxy修改url以包括完整的主机名。 所以,而不是 GET /something HTTP/1.1 example.com看到: GET https://examples.com/something HTTP/1.1 有什么办法可以避免这种情况,并保持相对的url?

Apache mod_proxy不够快地closures后端套接字

我正在使用Apache + mod_proxy提供与Ejabberd聊天应用程序。 它使用了Bosh(HTTP上的XMPP)。 问题是,当用户closures浏览器时,Apache保持与后端服务器连接一段时间(大约1分钟)。 这使我很烦恼,因为Ejabberd可以意识到用户只有在套接字closures时才会消失,所以用户的对话者不知道在这段时间+ Ejabberd自己的超时时间里发生了什么。 我可以改变Ejabberd的超时时间,但是我不知道如何减lessApache端的closures时间。 浏览器closures之前,请参阅netstat的输出: 浏览器 – > Apache mod_proxy tcp 0 0 127.0.1.1:80 127.0.0.1:52361 TIME_WAIT tcp 0 0 127.0.1.1:80 127.0.0.1:52380 ESTABLISHED tcp 0 0 127.0.0.1:52380 127.0.1.1:80 ESTABLISHED Apache mod_proxy – > Ejabberd tcp 0 0 0.0.0.0:5280 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:5280 127.0.0.1:40972 ESTABLISHED tcp 0 0 127.0.0.1:40953 127.0.0.1:5280 TIME_WAIT […]