Articles of mod proxy

Apache Proxying安装程序

我有一个情景如下: 我有一个DNS入口的url,例如http://example.com当用户inputhttp://example.com/portal ,他登陆Apache(2.2)Web服务器(比如AWS 1)。 在那里,我有一个虚拟主机条目代理请求到另一个Apachenetworking服务器(比如AWS 2)在局域网上运行,说IP 192.168.1.1使用反向代理。 然后, 192.168.1.1上的Apache Web服务器使用反向代理将请求转发到JBoss应用服务器。 这样做,生成页面的URL将更改为LAN IP https:\\192.168.1.2\portal 。 我希望原始URL完整无缺,因为外部用户的系统不知道192.168.1.2是什么。 这是我的第一个问题。 如果不是自明的,请耐心等待。 以下是AWS 1的vhost文件片段: <VirtualHost 192.168.10.179:80> ServerAdmin [email protected] DocumentRoot "D:/Program Files/Apache Software Foundation/Apache2.2/htdocs" ServerName example ServerAlias example ErrorLog "logs/example-error.log" # use always https Redirect pernament / https://example.com/ </VirtualHost> 以下是AWS 1的ssl文件(不是完整configuration)的片段: <VirtualHost 192.168.10.179:443> ServerAdmin [email protected] DocumentRoot "D:/Program Files/Apache Software Foundation/Apache2.2/htdocs" ServerName […]

反向代理是否可以向另一个代理发出请求,并在响应内容中重写url?

我目前正在研究逆向代理,但没有具体的一个。 我正尝试通过身份validation通过Web上的另一个代理将反向代理的请求转发。 反向代理的主要原因是有用户重写的URL,当用户点击它,它将通过我的反向代理转发。 但是,它也需要通过一个真正的代理与身份validation。 所以基本上我试图实现的是,用户导航到一个站点,请求被反向代理捕获,反向代理然后通过另一个代理(通过代理validation)发出另一个请求。 当反向代理得到响应时,它会从响应中的内容中重写URL并将其传回给用户。 我的问题是,这是可能的吗? 如果是这样,我可以从哪里开始实施呢? 任何帮助表示赞赏,谢谢! 编辑:我find了一种方式来重写使用mod_replace mod代理中的url 。 但是还没有find通过另一个代理转发networking请求的方法

Apache 2.4 / PHP-FPM ProxyPassMatch和访问限制

我有Apache / PHP的设置完全是这样的: https : //wiki.apache.org/httpd/PHP-FPM 它包括所提到的ProxyPassMatch规则: ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/path/to/files/$1 这发送所有请求.php在它的代理,并最终服务的PHP就好了。 但是,我一直在尝试做一些访问控制,代理似乎优先。 我的文件夹结构是这样的: / <– PHP files /extra/ <– PHP files /css/ /img/ 应该有权访问根目录中的PHP文件,但我想限制访问extra目录。 我已经将这些行添加到我的主要configuration: <Directory "/extra"> Order deny,allow Deny from all </Directory> 但PHP文件仍然执行…当我把一个不同types的文件在文件夹中,它被成功阻止,所以指令工程。 我猜ProxyPassMatch规则是禁止它为PHP文件工作。 我已经尝试了一些东西,比如将ProxyPassMatch规则放在一个<Directory>块中(不起作用,因为你不能在这样的块中使用ProxyPassMatch )并用[P]标志replaceProxyPassMatch来写一个RewriteRule (类似于这个: Apache 2.4 + PHP-FPM + ProxyPassMatch ,但是没有被代理)。 我的问题几乎和这个一样: http : //www.gossamer-threads.com/lists/apache/users/417758 。 然而,它没有得到明确的答案。 让我感到困惑的是你需要有代理规则,但是当你把它放进去的时候,没有其他东西似乎很重要(.htaccess也不能工作了)。 此外,这提出了有关安全的问题。 所有带.php东西都没有受到我想象的访问规定的影响,直接进入系统的内部。 如何将PHP-FPM与Apache中正确的安全规则结合起来?

Apache2 HTMLURLMap使用AJAX请求混淆

我需要代理从oldname.my.net Web应用程序newname.my.net为此,我使用代理模块的Apache这样的Apache # PROXY TO INTERNAL SERVER ProxyPreserveHost On RequestHeader set Host "oldname.my.net" RequestHeader set Authorization "Basic asj2dhI2dBASE64asdjlk=" ProxyPass / http://server.local/ ProxyPassReverse / http://server.local/ ProxyPassReverseCookieDomain oldname.my.net newname.my.net <Location /> SetOutputFilter proxy-html ProxyHTMLURLMap http://oldname.my.net/ / RequestHeader unset Accept-Encoding </Location> 代理工作到目前为止,我可以login和浏览,点击链接等,但一些内容通过AJAX请求加载,他们似乎并没有工作。 我没有在web开发经验,所以我不完全知道他们是如何工作或他们做什么,但他们似乎是dynamic加载内容,我认为ProxyHTMLURLMap选项是搞乱他们。 有没有人有经验的Apache代理和网站,使用硬编码链接(ProxyHTMLURLMap是必须的网站工作)和AJAX请求?

使用Apache前置应用程序服务器的高效设置

我必须在各种应用程序服务器(一开始,这将是JBoss 6,Tomcat 8独立和Tomcat 8embedded到Spring引导1.2应用程序)与Apache 2.4。 因此,我决定去mod_proxy(而不是jk,ajp或类似的东西)。 从我所知道的我设置Apache和应用程序服务器重用/池连接。 但是当我计算开放端口的数量时,我看到了几千个: $ netstat | grep :80 | wc -l 4630 (我在Windows上,上面的命令在Cygwin中运行,所以不要混淆,Apache等运行本地,这意味着没有cygwin模拟层)我可能已经预计可能有一千个端口,但不是更多。 这是我的Apache反向代理configuration: <VirtualHost *:80> ServerAdmin … ProxyRequests Off ProxyPreserveHost On ProxyPass / http://localhost:8080/ connectiontimeout=5 timeout=30 ProxyPassReverse / http://localhost:8080/ ServerName … ErrorLog "logs/foo.log" CustomLog "logs/foo-access.log" common </VirtualHost> MPM是活跃的,我可以使用多达150个传入连接,至less这是我从判断服务器状态来判断… … 1 requests currently being processed, 149 idle workers … ..和Apache的configuration: […]

dynamic添加BalancerMembers到代理

运行Apache 2.4我希望能够通过APIdynamic地将BalanaceMembers添加到proxy_balancer模块中的平衡器组中。 有暗示这是可能的。 mod_proxy_express的文档说mod_proxy_balancer“提供dynamic增长”。 我看到有一个BalancerGrowth指令,我已经尝试添加,但在平衡器pipe理器页面中看不到更多的插槽。 如何提供代理平衡器成员的dynamic增长? 我如何添加和删除它们? API的文档在哪里添加,删除和pipe理成员?

ProxyPass HTTPS到其他服务器

我有一个服务器frontend.example.com与公共IP。 它的Apache(2.4)应该代理service1.example.com (DNS别名frontend.example.com )的stream量。 service1.example.com是两个私有LAN( 192.168.56.0 )之间的虚拟机。 现在,这对HTTP很简单: <VirtualHost *:80> ServerName service1.example.com ProxyPass / http://192.168.56.2/ ProxyPassReverse / http://192.168.56.2/ <Location "/"> Require all granted </Location> </VirtualHost> 我正在尝试为HTTPS做同样的事情: <VirtualHost *:443> ServerName service1.example.com SSLEngine On SSLProxyEngine On ProxyRequests Off SSLProxyCheckPeerCN off SSLProxyCheckPeerExpire off SSLInsecureRenegotiation on SSLProxyVerify none SSLVerifyClient none SSLCertificateFile /etc/ssl/certs/example_com.crt SSLCertificateKeyFile /etc/ssl/certs/example_com.key ProxyPass / https://192.168.56.2/ ProxyPassReverse / […]

Apache mod_proxy + mod_cache(socache和磁盘)

我这里有一个三节点的apache mod_proxy负载均衡集群。 现在我想启用mod_cache从后端获得更多的负载到前端。 这就是我的cachingconfiguration: <IfModule mod_cache.c> <IfModule mod_disk_cache.c> CacheDefaultExpire 3600 CacheEnable disk https:// CacheEnable disk / CacheRoot "/mnt/ram/" CacheDirLevels 2 CacheDirLength 1 CacheMaxFileSize 1000000 CacheMinFileSize 1 CacheIgnoreCacheControl On CacheIgnoreNoLastMod On CacheIgnoreQueryString Off CacheIgnoreHeaders None CacheLastModifiedFactor 0.1 CacheDefaultExpire 3600 CacheMaxExpire 86400 CacheStoreNoStore On CacheStorePrivate On </IfModule> 加载apache模块: Loaded Modules: core_module (static) so_module (static) watchdog_module (static) http_module […]

Apache RewriteRule 502在开发服务器上的错误,在现场工作

我在Apache 2.2.15上。 我的vhost.conf包含一个RewriteRule来处理文章的URL; # handling for neat article titles RewriteRule ^/news/[0-9]{4}/[A-za-z]{3}/([0-9a-zA-Z-]*)/([0-9]{4})([0-9]{6})/?$ "/news/article.cfm?clk=$2&article_id=$3&urltitle=$1" [P,L] 这是在我们的活服务器上正常工作,但是在我的本地开发服务器上,当我尝试加载文章时,浏览器中出现502错误: Proxy Error The proxy server received an invalid response from an upstream server. The proxy server could not handle the request GET /news/2015/news-article/0123012345. Reason: DNS lookup failure for: localhost.example.com Apache/2.2.15 (CentOS) Server at localhost.example.com Port 80 这是我在错误日志中得到的; [Wed Oct 28 10:00:25 […]

通过一个反向代理传递一个503状态码

我得到的行为,我不明白从我的Apache反向代理。 我有一个后端服务器,在某些进程中使用app_offline.htm返回503。 当发生这种情况时,我收到一个传统的Apache 403错误: You don't have permission to access / on this server. Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request. 如果我的后端服务器不可用,mod_proxy无法连接,我看到我的自定义错误屏幕,但一个普通的503 ..我猜我需要将503从mod_proxy返回到Apache处理,但我不知道如何。