Articles of mod proxy

Apache代理背后的GAE dev服务器有时很慢

由于Google App Engine开发服务器一次只能提供一个文件,因此我决定使用静态资源,而不是Apache 2.2.17 / XAMPP 1.7.4 / WinXP32 。 使用Apache的“ProxyPass”将请求dynamic创build的资源路由到GAE开发服务器。 总的来说,可靠和快速的工作。 但是,通过Apache访问时,dynamic创build的资源有时需要很长时间才能加载。 起初我以为这是由于GAE开发服务器响应缓慢。 但是,当直接从GAE开发服务器加载相同的资源时,响应总是很快。 什么可能是这些缓慢的反应的原因? 摘自Apache日志(注意从10:10:42到10:10:53的等待): [Fri Aug 05 10:10:42 2011] [debug] proxy_util.c(2444): proxy: HTTP: fam 2 socket created to connect to localhost [Fri Aug 05 10:10:42 2011] [debug] proxy_util.c(2576): proxy: HTTP: connection complete to 127.0.0.1:8080 (localhost) [Fri Aug 05 10:10:53 2011] [debug] mod_proxy_http.c(1735): […]

如何使用Apache从子文件夹代理到其他服务器

鉴于以下url: domain.com/wiki/ 我想要Apacheredirect下面的所有请求(所以domain.com/wiki/*)otherdomain.com:8080/。 但诀窍是我希望用户总是看到domain.com/wiki/。 其他域的webapp认为它是在根目录下运行的,所以内部链接到css和images,就像/css/style.css一样。 这些url需要重写为/wiki/css/style.css。 以下configuration主要在那里,但是缺less/ css&/ images rewrite解决scheme: ProxyRequests Off ProxyPass /wiki/ http://otherdomain.com:8080/ ProxyPassReverse /wiki/ http://otherdomain.com:8080/ 任何和所有帮助表示赞赏。

apache – mod_rewrite + mod_proxy在分期工作,不在生产中工作(忽略选项)

我在我的Apache虚拟主机中设置了一个redirect服务,这个虚拟主机服务于几个子域名 – 称为a.example.com和b.example.com – 在rails应用上提供ruby服务。 在我的虚拟主机configuration文件,我有这个规则: rewriteEngine on rewriteRule proxy/(.+)$ http://news.example.com/$1 [P] 这个想法是,我可以做http://a.example.com/proxy/news/a并获得http://news.example.com/news/a的内容,但在同一个子域,所以阿贾克斯doesn不认为我的阿贾克斯请求是跨域 – 关于这个问题的更多信息 。 问题是,虽然它在我的临时环境中工作得很好,但它不在生产中! 两台服务器都是Ubuntu服务器10.04。 Apache来自标准的ubuntu软件仓库,使用apt-get install 。 我已经做了整个/ etc / apache2 /目录的差异,唯一的区别是服务器名称。 如果我把最后一个选项改为[L],我得到一个redirect,所以这让我觉得mod_rewrite正在工作。 它只是不会与mod_proxy交谈。 通过查看日志( /var/log/apache2和rails日志),生产中的重写规则似乎被忽略 – 日志完全相同,就好像它不在那里一样。 我怎样才能debugging呢? 我可以强制Apache给我更多的信息,当我访问/proxy时为什么不执行这个特定的规则?

如何阻止漫游器超载我的performance不佳的Web应用程序?

我们有这样一种情况,即僵尸程序占据了低性能Web应用程序页面请求的40%。 短期救济 作为即时救济,我想到了以下几点: 设置应用程序的另一个实例指向数据库的从属副本。 调用这个“服务器B”,而主应用程序是“服务器A”) 将所有botstream量转发到“服务器B”,将所有其他请求转发到主应用“服务器A” 通过服务器将“botstream量”从“用户stream量”中分离出来,会给服务器端更精确的分析带来额外的好处(即知道所有stream量来自“真实用户”而不是来自机器人)。 另外,我们可以使用较慢的服务器来处理“botstream量”,并将更多的资源投入到“真正的客户” 上下文 目前使用Apache 2.2与mod_proxy前端。 后端是jboss / tomcat 我们有一个手动维护的机器人头部列表(例如baidu,bingbot,googlebot,msnbot等) 题: apache(或者mod_proxy)可以根据头文件转发请求(例如,将所有的请求都用baidu,googlebot,msnbot等转发到ServerB,所有其他的都转发到Server A) 请考虑任何其他build议 提前致谢

基于请求主机头的mod_proxy Fowarding

比方说,我有3个url,他们都指向相同的反向代理。 我希望根据主机头将请求转发到代理后面的Web服务器: webfront1.example.com > reverseproxy.example.com > backend1.example.com webfront2.example.com > reverseproxy.example.com > backend2.example.com webfront3.example.com > reverseproxy.example.com > backend3.example.com 根据我读到的内容,我可以configurationreverseproxy.example.com/webfront1 > backend1.example.com, reverseproxy.example.com/webfront2 > backend2.example.com等。 我想知道如果代理基于主机头甚至可能或者如果我完全用错误的方法。

与查询string替代的Mod-proxy?

我目前正在尝试使用mod_proxy在另一台服务器上进行search请求。 远程服务器请求的结构如下: http://path.to.remote/search.php?key=MYKEY&term=SEARCHTERM 为了模糊我的访问密钥,我希望在我的虚拟主机定义中包含authentication。 由于键必须作为查询string值传递,所以我认为这将是简单的: ProxyPass /lookup/t/ http://path.to.remote/search.php?key=MYKEY&term= 我的url看起来像什么地方 http://localhost/lookup/t/term=SEARCHTERM 我很快发现,ProxyPass会在目标URL上执行强制性字符转义,导致我的URL无法使用。 我发现了很多有类似问题的人,主要是以前编码过的字符,并且ProxyPass的URL编码是不可避免的。 我发现了一些build议,我应该使用mod_rewrite为我组装代理请求,但我不知道如何做到这一点。 我的虚拟主机定义中的规则看起来像这样: RewriteEngine On RewriteCond %{REQUEST_URI} !^/lookup/t/ RewriteRule ^/lookup/t/$ http://path.to.remote/search.php?key=MYKEY&term=$1 我没有mod_rewrite很多的经验,我的正则expression式技能不是很好,所以我希望有人能够解释我将如何重写我的URL,以及如何通过mod_proxy根据需要漏斗。 我正确的想我需要使用重写来组装查询string,如下所示: Http://localhost/lookup/t/term=SEARCHTERM Http://localhost/lookup/t/?key=MYKEY&term=SEARCHTERM 然后用mod代理去 /lookup/t/ 至 http://path.to.remote/search.php

只有与mod_proxy工作的端口是8009,试图与tomcat和httpd一起使用,不知道为什么

我想用httpd和tomcat使用mod_proxy。 如果我离开tomcat ajp运行在tomcat的server.xml中的8009和apache httpd的httpd.conf中一切都很好,但是一旦我将其更改为其他任何东西,并重新启动它们都不起作用..我trield 8109, 8209和8019 ..只有工作的是8009? 下面是我的设置工作。 <Proxy balancer://testcluster stickysession=JSESSIONID> BalancerMember ajp://127.0.0.1:8009 min=10 max=100 route=node2 loadfactor=1 </Proxy> ProxyPass /examples balancer://testcluster/examples <Location /balancer-manager> SetHandler balancer-manager AuthType Basic AuthName "Balancer Manager" AuthUserFile "/etc/httpd/conf/.htpasswd" Require valid-user </Location> 如果我更改端口到这里的任何东西和tomcat的server.xml它不起作用,但我可以远程login端口,所以我知道它? 以下是我有的其他库设置 LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule auth_digest_module modules/mod_auth_digest.so LoadModule authn_file_module modules/mod_authn_file.so LoadModule authn_alias_module modules/mod_authn_alias.so LoadModule authn_anon_module modules/mod_authn_anon.so LoadModule authn_dbm_module modules/mod_authn_dbm.so […]

Apache2 mod_proxy出于某种原因修改了内容types

我使用本地代理使用apache2做一些开发工作(OSX 10.8): SSLProxyEngine on ProxyPass /app https://my.server.org/app ProxyPass /web https://my.server.org/web 一切工作正常,除了Apache2的一些如何覆盖HTML文件的content-type响应头。 如果我请https://my.server.org/app/index.html内容types是text/html ,而http://localhost/app/index.html我看到正确的页面,但内容type设置为text/plain使浏览器显示未呈现的html代码。 它似乎只发生在html文件。 为什么发生这种情况?

Apache2代理Tomcat6在启动时防止503错误

当tomcat6启动时,所有的http请求都被服务器保留,并在服务器启动时发送响应。 但是当我使用apache2作为代理的时候,apache2在tomcat启动的时候会响应503错误。 我怎样才能防止这个默认的Apache代理的行为? 我的apache虚拟主机configuration如下所示: <VirtualHost 0.0.0.0:[PORT]> ProxyPreserveHost On ProxyVia full <proxy> Order deny,allow Allow from all </proxy> ProxyPass /[PATH] http://localhost:8080/[PATH2] ProxyPassReverse /[PATH] http://localhost:8080/[PATH2] </VirtualHost>

其中子path是其他端口的代理的Apache代理configuration

我希望有以下事情发生: http://www.example.com/wiki是http://www.example.com的代理:8090/ http://www.example.com/是http://www.example.com的代理:8080/ 我有以下的Apacheconfiguration。 但是,这既有http://www.example.com/也有http://www.example.com/wiki是http://www.example.com:8080/的代理。 我怎样才能纠正这一点? <VirtualHost *:80> ProxyRequests Off ProxyPreserveHost On <Proxy /wiki> Order allow,deny Allow from all </Proxy> ProxyPass /wiki http://www.example.com:8090/ ProxyPassReverse /wiki http://www.example.com:8090/ <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://www.example.com:8080/ ProxyPassReverse / http://www.example.com:8080/ </VirtualHost>