Articles of mod proxy

Apache ProxyPass丢失图像

我有一个位于我的glassfish服务器前的apache服务器。 mydomain.com直接进入我在apache上的静态文件,比如果你打到子域forum.mydomain.com它会去到glassfish webapp论坛/在127.0.0.1:8080/forum/。 这个代理似乎工作,把我带到networking应用程序,但所有的图像都失踪了! 这是我如何去我的虚拟主机设置。 NameVirtualHost *:80 <VirtualHost *:80> ServerName www.mydomain.com ServerAlias subdomain.mydomain.com mydomain.com DocumentRoot "/usr/local/apache/htdocs" </VirtualHost> <VirtualHost *:80> ServerName forum.mydomain.com # any logging config, etc, that you need ProxyPass / http://127.0.0.1:8080/forum/ ProxyPassReverse / http://127.0.0.1:8080/forum/ </VirtualHost> 在访问日志中,这是我所看到的。 [15/Jan/2012:03:28:02 +0000] "GET /forums/list.page HTTP/1.1" 200 12861 [15/Jan/2012:03:28:02 +0000] "GET /forum/templates/default/images/logo.jpg HTTP/1.1" 404 1075 [15/Jan/2012:03:28:02 +0000] "GET /forum/templates/default/styles/style.css?1326582403934 […]

mod代理不工作在Apache

我试图在WHM / CPanel CeEntOS Linux服务器上安装Mod_Proxy Apache模块。 这里是系统信息: CentOS release 5.6 (Final) Server version: Apache/2.2.21 (Unix) Cpanel::Easy::Apache v3.7.2 rev9999 我安装的目的是这样的,当在网站abc.com上时,当我点击链接到网站auto.efg.com(假设它的IP地址是192.168.0.101)时,浏览器将在auto.efg上加载应用程序。同时在浏览器地址栏上维护abc.com。 所以我遵循这个教程: Install Mod_Proxy Apache module on WHM/CPanel CeEntOS Linux Server Without Recompiling Apache 所以当我完成后,我能够做到这一点: root@ip-xxx-xxx-xxx [/tmp/httpd-2.2.21/modules/proxy]# ls -l /usr/local/apache/modules/mod_proxy* -rwxr-xr-x 1 root root 88708 Jan 5 08:22 /usr/local/apache/modules/mod_proxy.so* -rwxr-xr-x 1 root root 49654 Jan 5 08:23 […]

如何configurationApache的mod_proxy_html作为一个Ajax代理?

我试图build立一个网站,让您查看和操纵任何其他网站的任何网页的数据。 要做到这一点,我必须绕过“ Allow Origin ”的问题:我加载其他域的内容在iframe ,我必须从我的域下载的JavaScript操纵其内容。 我的第一个尝试是自己编写一个简单的代理,通过一个以Java编码的服务器代理来请求其他域的页面,它不仅服务于内容,而且还重build内容中的链接(src和href),以便这些链接所引用的内容得到通过我的手工代理下载。 结果是不错,但在css和脚本中的URL的问题。 那么,我意识到mod_proxy_html应该完成所有这些工作。 问题是,我不知道如何使其按预期工作。 让我们假设我的服务器运行在my-domain.com,并代理和转换来自另一个域的内容我会提出这样的请求: my-domain.com/proxy?url=http://another-domain.com/some/content 我希望mod_proxy_html提供内容,并通过以下方式在http://another-domain.com/some/content中重写以下URL: 不是来自another-domain.com绝对url:不重写 相对于根url: /other/content – > /proxy?url=http://another-domain.com/other/content 相关url: other/content – > /proxy?url=http://another-domain.com/some/content/other/content 相对于父url: ../other/content – > /proxy?url=http://another-domain.com/some/other/content 该url应该在运行时指定,而不是configuration时间。 这可以通过mod_proxy_html来实现吗? 任何人都可以提供一个简单的工作configuration开始? 编辑1-第一种方法 下面的网站configuration可以正常使用绝对url的网站,比如http://www.huffingtonpost.es/ 。 你可以试试这个configuration在本地主机上: http://localhost/asset/http://www.huffingtonpost.es/ <VirtualHost *:80> ServerName localhost LogLevel debug ProxyRequests off RewriteEngine On RewriteRule ^/asset/(.*) $1 [P] ProxyHTMLURLMap $1 /asset/ <Location […]

在反向代理中重写Apache URL

我在一个Karaf托pipe的应用程序(Apache和Karaf在不同的服务器上)前部署Apache。 我希望Apache可以作为反向代理运行,也可以隐藏部分URL。 直接从应用程序服务器获取应用程序login页面的URL是http://app-server:8181/jellyfish 。 页面由在Karaf内运行的Jetty实例提供服务。 当然,除了反向代理服务器以外,这种行为通常会被防火墙阻止。 在防火墙closures的情况下,如果您点击此URL,Jetty将加载login页面。 浏览器的地址栏正确地更改为http://app-server:8181/jellyfish/login?0 ,一切正常。 我想要的是http://web-server (即从根目录)映射到应用程序服务器上的Jetty与应用程序( jellyfish )的名称压制。 例如,浏览器将更改为在地址栏中显示http://web-server/login?0 ,所有后续的URL和内容将与Web服务器的域一起提供,并且不会出现jellyfish混乱。 我可以使用下面的configuration(snippet)让Apache作为一个简单的反向代理来运行: ProxyPass /jellyfish http://app-server:8181/jellyfish ProxyPassReverse / http://app-server:8181/ …但这需要浏览器的URL包含jellyfish和去根URL( http://web-server )给出了404 Not Found。 我花了很多时间试图使用mod_rewrite和没有[P]标志来解决这个问题,但没有成功。 然后我尝试了ProxyPassMatch指令,但我似乎无法得到相当正确的。 这是当前的configuration,正如加载到Web服务器上的/etc/apache2/sites-available/ 。 请注意,有一个本地托pipe的图像目录。 我也保留了mod_rewrite代理漏洞保护,并且压制了一些伪造的错误mod_security规则。 <VirtualHost *:80> ServerAdmin admin@drummer-server ServerName drummer-server ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined Alias /images/ "/var/www/images/" RewriteEngine On RewriteCond %{REQUEST_URI} !^$ RewriteCond […]

如何configurationmod_proxy_balancer在高负载下正常失败

我们有一个在多个tomcat中有一个Apache实例的系统。 这些tomcats然后连接到各种数据库。 我们用mod_proxy_balancer来平衡tomcat的负载。 目前我们每秒收到100个请求,Apache服务器的负载很低,但是由于数据库对tomcats的操作非常繁重,所以负载大约有25%(我估计他们可以处理)。 在几个星期之内发生了一件事情,我们估计我们的请求会跳得很厉害,可能是10倍。 我正在尽我所能减轻我们的雄猫的负担,但我知道我们将用尽能力,所以我想优雅地失败。 通过这个我的意思是,而不是试图处理太多的连接,所有的超时,我希望Apache以某种方式监测平均响应时间,只要响应时间到Tomcat超过某个阈值,我想要一个错误页面显示。 这意味着幸运的用户仍然可以快速获得页面,而不幸的用户可以快速获取错误页面。 而不是每个人都等待太久的页面,最终每个人都会超时,而数据库被淹没在从未使用的查询中。 希望这是有道理的,所以我正在寻找如何实现这一目标的build议。 谢谢

mod_proxy – 我应该紧张吗?

据我所知,我在Apache生产服务器上禁用了所有mod_proxy的东西。 什么是testing或确认的合理方法? 看看我的httpd.conf,我可以告诉你,任何具有“代理”的行都会被评论,这是值得的。 我想问的是我今天早上在我的logging报告中看到了这个东西: Connection attempts using mod_proxy: 81.88.124.30 -> 64.12.202.116:443: 1 Time(s) 81.88.124.30 -> 64.12.202.15:443: 1 Time(s) 81.88.124.30 -> 64.12.202.1:443: 1 Time(s) 81.88.124.30 -> 64.12.202.22:443: 1 Time(s) 81.88.124.30 -> 64.12.202.29:443: 1 Time(s) 81.88.124.30 -> 64.12.202.36:443: 1 Time(s) 81.88.124.30 -> 64.12.202.43:443: 1 Time(s) 81.88.124.30 -> 64.12.202.50:443: 1 Time(s) 81.88.124.30 -> 64.12.202.8:443: 1 Time(s) Requests with […]

mod_jk或mod_proxy

我尝试了谷歌search,唯一的文章,我发现比较这两个是从2005年到2002年。我只是build立我的第一个Tomcat实例运行Jira为我正在做一个项目。 我想通过端口80和apache代理这个。 从我可以告诉,我可以很容易地使用mod_proxy转发stream量。 使用mod_jk有什么区别? 这两个MOD有没有任何性能/安全的区别? 任何人有任何提示/经验设置转发通过Apache? 我正在运行Debian Lenny。

即使在代理服务备份后,mod_proxy仍会返回503个错误

我有一个设置与Apache2作为前端服务器的多个python应用程序gunicorn服务 。 我使用mod_proxy的Apache2设置如下所示: <VirtualHost *:80> ServerName example.com UseCanonicalName On ServerAdmin webmaster@localhost LogLevel warn CustomLog /var/log/apache2/example.com/access.log combined ErrorLog /var/log/apache2/example.com/error.log ServerSignature On Alias /media/ /home/example/example.com/pysrc/project/media/ ProxyPass /media/ ! ProxyPass / http://127.0.0.1:4711/ ProxyPassReverse / http://127.0.0.1:4711/ ProxyPreserveHost On ProxyErrorOverride Off </VirtualHost> 一般来说,这个设置工作得很好。 我有一个问题,但是:当我重新启动gunicorn进程(需要2-5秒),并有一个来自Apache的请求,该请求将失败,503错误。 到现在为止还挺好。 但是,即使在gunicorn进程恢复之后,Apache仍然会返回503个错误。 只有在完全重新启动Apache之后,它才从代理服务器恢复提供内容。 有没有办法解决这个问题?

我如何平稳地将Web服务器的DNS从一个IP地址迁移到另一个IP地址?

我目前有一个域名注册了Linux / Apache服务器,我将用另一个新的IP地址replace。 迁移数据将相对较快,在此过程中可能会中断5分钟。 DNSlogging显然有6-12小时的TTL,我无法加速。 这种改变可能会带来什么后果? 据推测,仍在查看旧地址的用户将继续击中旧服务器,而DNS域名服务器的用户已过期或为空则会看到新域名。 是否有可能从旧服务器(使用Apache或iptables)到新IP进行某种redirect? 旧服务器可以继续运行,只要有必要。

Apache httpd工作人员重试

我有一个运行mod_proxy和mod_proxy_balancer的Apache httpd web服务器。 整个/ somedir被发送到2个工作机器,它们使用循环调度程序来处理请求。 每个工作机器都运行IIS,但我不认为这很重要。 我可以通过反复请求包含机器IP地址的单个页面来演示负载均衡器,并以可预测的循环方式从一个页面切换到另一个页面。 如果我closures其中一个IIS服务器并开始请求相同的页面,那么每个页面只包含已启动机器的IP地址。 但是,如果我启动IIS并且不运行我的IIS应用程序,则/ somedir将返回500(因为它应该)。 我已经将500添加到了failonstatus(Apache 2.4),所以当它遇到错误Apache将工作机器置于错误状态。 尽pipeApache仍然向客户端返回代理错误。 如何让Apache捕获代理失败,并以与连接失败相同的方式使用其他工作器重试。 更新 有几乎相同的问题在StackOverflow问,所以join他们在一起。 https://stackoverflow.com/questions/11083707/httpd-mod-proxy-balancer-failover-failonstatus-transperant-switching