Articles of mod proxy

mod_deflate – 大多数浏览器的最佳configuration

我想知道如果有人在这里可以帮助我确定使用mod deflate与Apache的最佳标准configuration。 基本上,mod_deflatebuild议使用以下configuration立即开始: 只压缩几个types AddOutputFilterByType DEFLATE text / html text / plain text / xml http://httpd.apache.org/docs/2.0/mod/mod_deflate.html 但是,只需阅读文档,就可以为所有浏览器自定义此文档。 另外,你可以为所有不同types的MIMEtypes定制mod_deflate。 我想知道有没有人试过这些设置,并find了一个最适合所有浏览器的设置。 Apache提供的另一个示例,但是如果您不了解所有configuration选项,请提及不要使用: <Location /> # Insert filter SetOutputFilter DEFLATE # Netscape 4.x has some problems… BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 have some more problems BrowserMatch ^Mozilla/4\.0[678] no-gzip # MSIE masquerades as Netscape, but it is fine […]

在htaccess中了解apache 2.4 mod_proxy_fcgi和RewriteRules

我们最近把我们的Web服务器之一切换到apache 2.4,并通过php-fpm和mod_proxy_fcgi运行PHP。 大多数一切运作良好,但有一个问题我还不明白。 我们的一个网站正在运行WordPress,它在.htaccess文件中带来了一个很好的重写规则列表。 而且似乎这些在vhost安装中的ProxyPass指令不能很好地工作。 我们的虚拟主机包含以下configuration: ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.2:9126/<path>/$1 这在大多数情况下工作。 现在,htaccess文件除其他外,还包括: RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ – [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L] RewriteRule . index.php [L] 由于该站点是子目录中的多路博客,我读了URL /blogname/wp-admin/load-styles.php?xxxx应该被重写为wp-admin / load-styles.php?xxx(第二个重写规则)。 但是看看mod_proxy日志,实际传递的请求是/blogname/wp-admin/load-styles.php。 我认为这是因为存在一个优先问题 – ProxyPass规则在所有的RewriteRules都被解决之前触发。 我受阻 – 可能是什么原因?

在中间使用Apache Proxy重写302 App ServerredirectURL

我有一个奇怪的设置。 它看起来像这样: Browser ———-> HTTPs Proxy ——> Apache HTTP —–> Tomcat AJP HTTPS HTTP AJP 在HTTPS代理(非常愚蠢的代理)上,URL看起来像https://proxy.domain.com/app。 然后通过http传输到Apache,就像http://apache.domain.com/app(通过主机proxy.domain.com传递)一样。 然后,Apache使用AJP协议在本地将请求隧道到ajp:// localhost:8009 / app /。 有时应用程序服务器要redirect请求的path。 例如,redirect/ app / to / app / webapp。 所以,它发送一个302回到Apacheredirectpath – 可能是像ajp:// localhost:8009 / app / webapp。 然后,Apache将redirectURL重写为http://proxy.domain.com/app/webapp。 HTTPS代理是愚蠢的,所以它不分析redirect并将http更改为https。 所以,我想知道是否可以configurationApache来重写302redirectURL来将用户发送到https。 这里是我在Apache的https.conf中的configuration: ProxyPreserveHost on RewriteEngine on RewriteRule ^/app$ /app/ [PT] ProxyPass /app ajp://localhost:8009/app 我尝试使用ProxyPassReverse […]

Apache ProxyPass或ProxyPassMatch从代理中排除文件

我有一个VirtualHost设置代理所有请求到另一台服务器上运行的端口9000。 我拥有的 : ProxyPass / http://localhost:9000/ ProxyPassReverse / http://localhost:9000/ 我试过了: ! ProxyPass /test.html http://localhost:9000/ ProxyPass /test.html ! http://localhost:9000/ ProxyPassMatch !^/(.*\.html)$ http://localhost:9000/$1 没有一个工作… 我想排除一个文件或一组文件被代理,文档中提到了一些关于“!!指令在你不想反向代理一个子目录的情况下是有用的”,但是没有例子那种情况

如何将mod_proxyconfiguration为基于http vs https的ProxyPass?

我启用了运行SSL的Apache Tomcat。 我有Apache HTTP服务器充当反向代理,所以如果用户点击http:// myserver / tomcat /他们被传递给http:// myserver:8080 。 ProxyPass /tomcat/ http://myserver:8080/ ProxyPassReverse /tomcat/ http://myserver:8080/ 我为SSLconfiguration了Apache HTTP服务器,所以当用户点击https:// myserver / tomcat /时,他们应该被传递给https:// myserver:8443 / 。 使用当前的ProxyPass&ProxyPassReverseconfiguration,它们将被redirect到非SSL URL。 如何设置代理通行证,以便根据传入的请求redirect到不同的协议和端口? 也就是说,如果有人通过HTTPS进入,我可以将它们redirect到我的tomcat @ https:// myserver:8443 ? 更新: @迈克 – insch 我试过了: NameVirtualHost *:443 <VirtualHost *:80> ProxyPass /tomcat/ http://myserver:8080/ ProxyPassReverse /tomcat/ http://myserver:8080/ </VirtualHost> <VirtualHost *:443> ProxyPass /tomcat/ https://myserver:8443/ ProxyPassReverse […]

ProxyPreserveHost个人代理通行证规则

在我的虚拟主机上有两个proxypass规则,一个指向本地varnish实例进行caching,我希望启用ProxyPreserveHost,另一个指向第三方托pipe的站点,我希望禁用ProxyPreserveHost。 无论如何,我可以在每个规则/传球的基础上做到这一点?

Apache Httpd自定义ErrorDocument 404当ProxyPass返回404

我使用Proxy Pass在另一个应用程序服务器的前面安装了Apache Web服务器。 当对应用程序的请求返回错误404时,我想显示来自Web服务器的自定义错误页面,而不是来自应用程序服务器的错误页面。 我试图在虚拟主机上设置ErrorDocument 404,但是它不起作用。 我应该怎么做? 或者这是不可能的? <VirtualHost *:80> ServerName servername DocumentRoot /somepath/ ProxyPass / http://localhost:8080/someapp/ ProxyPassReverse / http://localhost:8080/someapp/ ErrorDocument 404 /error.html </VirtualHost>

我怎样才能configurationmod_proxy不具体不caching503错误?

这是我的mod_proxyconfiguration: <IfModule mod_proxy.c> <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass /manage/ http://localhost:9000/manage/ ProxyPassReverse /manage/ http://localhost:9000/manage/ </IfModule> 我发现无论何时在9000端口上的其他网站都没有正确响应,我得到了503个错误 – 即使在网站被修复之后,这个错误仍然存​​在。 换句话说,503响应似乎被caching了。 我怎样才能禁用它? 我不认为我已经启用了caching自己,也许这是默认的。

使用apache作为HTTP代理的HTTPS

我试图在Centos 6上configurationApache来代理和反向第三方提供商的http服务器的代理stream量。 设置应该像这样工作: https://mydomain.com/proxy/ : https://mydomain.com/proxy/代理所有stream量透明地http://thirdparty.com/app/ 我遇到的问题是对https://mydomain.com/proxy/任何请求得到301响应的redirect。 这些都是我的VirtualHost中的所有代理相关的选项 SetOutputFilter proxy-html ProxyHTMLExtended On ProxyRequests Off SSLProxyEngine On <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass /proxy/ http://thirdparty.com/app/ <Location /proxy/> ProxyPassReverse / ProxyHTMLEnable On ProxyHTMLURLMap http://thirdparty.com/app/ /proxy/ ProxyHTMLURLMap / /proxy/ </Location>

帮我理解如何使用ProxyPass

更新:我添加了一个修改后的问题后,下面两个答案。 你好, 如果你正在阅读,你可能对Apache的mod_proxy及其ProxyPass函数很熟悉。 像其他许多人一样,我有一个可以从内部networking外部访问的应用程序的问题,但是应用程序本身可以访问不同计算机上的其他内部应用程序,并且当您使用此设置进行远程访问时,情况会变得糟糕透顶。 所以,我的设置很简单,我有: 机器#1启用了远程访问,我通过主机名访问它,并且吐出运行在其上的PHP应用程序。 机器#2是一个运行Django的新应用程序,它使用了一个完全不同的后端(甚至authentication),它被托pipe在一个单独的机器上。 在我们的内部网中,我们通过一个简单的命名主机名来访问它,它主要链接到内部的192.168.0.101 ip。 我尝试使用ProxyPass来设置它,例如,传递给/ new将把它发送到新的应用程序: ProxyPass /新http://192.168.0.101/ 这种工作,它获取到其他应用程序的请求,但它打破了,因为我的Django应用程序想redirect到/ auth / login /,它立即无法识别。 如果我自己修改url为foo.net/new/auth/login我得到我的login页面,但是正如你所猜测的,在整个浏览过程中这样做是不方便的。 那么我怎样才能让ProxyPass按照我的意愿工作呢? 我是否需要对Apache做些什么,所以它总是写入/新的URL在其他应用程序之前,或者这是我应该在我的Django应用程序中修改? 任何提示和指针,以及将不胜感激。 谢谢你的时间