Articles of mod proxy

如何限制Apache位置指令以保留子域?

在我们的服务器www.example.com ,我们使用<Location>指令将stream量代理到后端服务器: <Location /app1> ProxyPass http://192.168.1.20 </Location> 然后我们添加了一个指向www.example.com的相同IP地址的子域uat.example.com 。 我们希望将其用作客户端的代理来testing正在开发的应用程序。 希望客户可以通过以下方式访问: http://uat.example.com/app2_uat 现在,如果我们添加一个位置: <Location /app2_uat> ProxyPass http://192.168.1.30 </Location> 客户端可以同时访问: http://www.example.com/app2_uat http://uat.example.com/app2_uat 我如何限制位置,只有: http://uat.example.com/app2_uat 可以访问吗? (即http://www.example.com/app2_uat不应该是可访问的。)

Apache代理到FTPS

我有一个Apache 2.2.15的CentOS 6.4服务器。 我想做一个FTP服务器的代理。 贝娄你可以find我的configuration: <VirtualHost *:8001> DocumentRoot /var/www/html/root RewriteEngine On SSLProxyEngine on SSLProxyMachineCertificateFile "ssl/cert.pem" ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / ftp://IP:990/ ProxyPassReverse / ftp://IP:990/ ErrorLog logs/proxy.error.log CustomLog logs/proxy.access.log common </VirtualHost> 当我尝试做一个代理url时: curl -ik http://localhost:8001/ 我在日志中得到以下回应: [Tue Dec 10 13:17:22 2013] [error] [client IP] proxy: SSL/TLS required on the […]

强制Apache 2.4使用mod_cachecaching具有查询string的文件,而不会过期

我需要得到mod_cache_diskcaching包含查询string的网站。 问题在于,它是IIS上的一个供应商产品,我们试图通过mod_proxy进行caching,并且不包含expires头文件。 我意识到这个问题违反了几个RFC,这就是为什么Apache不默认。 有没有办法强制的Apache 2.4.xcaching与查询string,并没有过期头? 这种configuration将caching,但当然不尊重? 它caching大部分项目的错误内容。 CacheEnable disk https:// CacheEnable disk / CacheRoot /var/cache/mod_proxy/ CacheDirLevels 4 CacheDirLength 5 CacheIgnoreCacheControl On CacheIgnoreNoLastMod On CacheIgnoreHeaders None CacheMaxFileSize 100000000 CacheMinFileSize 1 CacheMaxExpire 1209600 CacheDefaultExpire 3600 CacheIgnoreQueryString On CacheStoreNoStore On CacheStorePrivate On 如果我将CacheIgnoreQueryString更改为Off,它将开始发出关于expires标题的错误。 AH00768:caching:/view.image?Id=1114没有caching。 原因:查询string存在但没有明确的到期时间,

将子文件夹dynamic地反向代理到Apache中的子域

我想dynamic代理子文件夹到另一个主机上的子域。 例如,我有以下反向代理设置为单个子文件夹到子域: ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass /app1/ http://app1.myotherserver.tld/ ProxyPassReverse /app1/ http://app1.myotherserver.tld/ 上述工作正常(除了尾随的“/”问题)。 但是,我需要添加另外10个,就像它,app2,app3,app4等…也许在未来更多。 添加每一个显然是没有意义的。 使用http://httpd.apache.org/docs/current/rewrite/proxy.html的页面作为参考,我这样做: RewriteRule ^/(.*)/$ http://$1.myotherserver.tld/ [P] RewriteRule ^/(.*)/(.*)$ http://$1.myotherserver.tld/$2 [P] ProxyPassReverse /$1/ http://$1.myotherserver.tld/ 这样的作品,但我现有的子文件夹被拉入该规则,我仍然有问题的尾随“/”。 我尝试添加“?” 遵循第一条规则,但是这打破了一切: RewriteRule ^/(.*)?/$ http://$1.myotherserver.tld/ [P] 我如何使“http; // www.mywebserver.tld / app2”这样的东西工作,但仍然允许这些有效的URL仍然工作? http://www.mywebserver.tld/style.css http://www.mywebserver.tld/images/title.png http://www.mywebserver.tld/existingsubfolder http://www.mywebserver.tld/existingsubfolder/page.php

将端口3000路由到apache2别名

我有一个运行在端口3000上的meteor应用程序。我可以用www.myurl.com:3000成功连接到该程序,但宁可通过www.myurl.com/myappname连接到该程序。 我开始在这个网站上的说明: http : //www.andrehonsberg.com/article/deploy-meteorjs-vhosts-ubuntu1204-mongodb-apache-proxy和我有以下的Apacheconfiguration文件: <VirtualHost *:80> ServerName myurl.com ProxyRequests off <Proxy *> Order deny,allow Allow from all </Proxy> <Location /> ProxyPass http://localhost:3000/ ProxyPassReverse http://localhost:3000/ </Location> </VirtualHost> 我不知道如何继续从这里获得www.mysite.com/myapp上的程序。 在其他情况下,我会在Apacheconfiguration文件中使用别名,但是在这种情况下,这看起来不是正确的方向。 如何configurationApache发送端口3000到www.myurl.com/myapp?

Apache mod_proxy_balancer + Tomcat负载平衡 – 在Web应用程序准备就绪之前不应该redirect

我正在使用apache2 mod_proxy和mod_proxy_balancer来平衡负载到不同服务器上的4个独立的tomcat8实例。 我为每个tomcat实例使用不同的AJP端口,并在tomcat server.xml使用jvmRoute指令,如下所示:第一个实例: <Connector port="[port1]" protocol="AJP/1.3" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1"> 第二审: <Connector port="[port2]" protocol="AJP/1.3" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2"> 等等。 在apache2configuration中,我定义了一个集群,像这样: <Proxy balancer://myCluster> BalancerMember ajp://[ip1]:[port1] route=tomcat1 loadfactor=1 BalancerMember ajp://[ip2]:[port2] route=tomcat2 loadfactor=1 BalancerMember ajp://[ip3]:[port3] route=tomcat3 loadfactor=1 BalancerMember ajp://[ip4]:[port4] route=tomcat4 loadfactor=1 ProxySet lbmethod=bybusyness ProxySet stickysession=JSESSIONID Order Deny,Allow Deny from none Allow from all […]

Apache2 proxypassreverse指令附加虚拟主机端口?

我一直在尝试使用apache 2 mod_proxy和proxypass&proxypassreverse指令设置反向代理。 我正在安装WSO2 Identity Server,并希望使用以下URL访问该应用程序。 hxxp://myserver.domain.com/wso2/ myserver.domain.com可以在互联网上访问 在我的networking内部,我使用以下参数设置了在我的apache2configuration中运行的虚拟主机: 由于各种原因,端口80不可用,并且虚拟主机必须保持为:8080。 最后,这是我的虚拟主机configuration <VirtualHost *:8080> <Location /wso2/> ProxyPass hxxps://internal.wso2.node:9443/ ProxyPassReverse hxxs://internal.wso2.node:9443/ </Location> ProxyVia On ProxyPreserveHost Off ProxyAddHeaders Off ProxyRequests Off SSLProxyEngine On SSLProxyCheckPeerCN Off </VirtualHost> 问题: 我可以使用我的网页浏览器(Firefox / Chrome)来请求http://myserver.domain.com/wso2/资源。 在我的日志文件中,我看到请求确​​实碰到了Apache服务器,虚拟主机获取/ wso2 /位置。 它通过代理并着陆在internal.wso2.node服务器上。 但是,产品WSO2 IS将执行几个redirect,在日志文件中,我看到它请求带有端口的资源。 这是请求stream程 hxxp://myserver.domain.com/wso2/ -> hxxps://internal.wso2.node:9443/ REDIRECT x3 hxxps://internal.wso2.node:8080/carbon -> hxxps://internal.wso2.node:8080/carbon/admin/login.jsp Back to my […]

会话丢失在Jetty使用Apache作为代理

我有一个基于eXist-db的应用程序。 这基本上是一个使用Jetty的Java Web应用程序。 它运行在Apache代理之后的远程Linux服务器上。 我使用下面的Apacheconfiguration: ServerName domain.com ProxyRequests off ProxyPass /myapp http://localhost:8899/exist/apps/myapp ProxyPassReverse /myapp http://localhost:8899/exist/apps/myapp 一切工作正常,除了会议。 每次请求会话都会被更新。 这意味着请求Cookie头不包含JSESSIONID但响应Set-Cookie头是类似JSESSIONID=oryq5odyt3f79xxax25n7x0h;Path=/exist 。 此外,我检查确认会话是每次新的应用程序中的会话ID。 我已经尝试了三种testing场景: testing场景A: 客户端:Windows 7,Google Chrome 服务器:Ubuntu 12.04.4 LTS(GNU / Linux 3.11.0-26-generic x86_64),代理Apache / 2.4.9 testing场景B: 客户端:Windows 7,Google Chrome 服务器:CentOS 6.6版(最终版),Apache / 2.2.15代理版 testing场景C(本地): 客户端:Windows 7,Google Chrome 服务器(相同的笔记本电脑):Windows 7,没有代理 问题出现在A和B两种情况下,但不在C中 任何想法如何使会议工作?

我如何强制mod_rewrite发送URI的用户信息组件?

一位同事build议我把这个从StackOverflow重新发布到ServerFault: 这一直使我疯狂。 我有一个通过Apache Web服务器提供的Web应用程序。 支持应用程序的数据库服务器是Apache CouchDB,它公开了HTTP API来检索文档和stream附件。 我通过提供一个安全对象来保护CouchDB数据库,该安全对象只允许某些用户访问数据库中的数据,并返回401匿名请求到HTTP端点。 我想能够映射公共URL到存储在这个数据库中的文档附件。 所以,我试图在我的.htaccess文件中创build一个重写规则,它将来自某些URL的请求直接代理到CouchDB,同时对用户凭证进行硬编码,如下所示: ## DOWNLOAD STREAM: RewriteCond %{HTTP_HOST} ^example.com$ RewriteRule download/(.*) http://user:[email protected]:5984/database/$1 [P] 在理想的世界中,上面的例子将采用以下URL: http://example.com/download/UUID/attachment.ext 并代理它: http://user:[email protected]:5984/database/UUID/attachment.ext 这个方法确实将请求代理到CouchDB,但省略了URIscheme的userinfo组件。 所以,该请求被视为匿名,我得到一个401错误。 如果从数据库中删除安全性,附件只能stream式传输。 我花了几个小时阅读Apache的configuration和尝试无济于事。 由于所有相关的查询都有类似的关键字,networkingsearch是徒劳的。 我如何确保mod_rewrite包含在代理CouchDB时在重写规则中提供的用户名和密码?

用自定义的PROXY_WORKER_MAX_NAME_SIZE构build并安装apache mod_proxy

我有一个虚拟主机(php-fpm / apache)configuration的问题。 它会抛出下面的错误: name ProxyPass worker name (unix:///var/www/vhosts/system/site/php-fpm.sock|fcgi://127.0.0.1:9000/var/www/vhosts/site/httpdocs) too long… 我知道我可以很容易地用符号链接解决它,或者只是通过删除unix套接字或fgcid部分。 但我正在想另一种方式。 我想知道是否可以使用apxs构buildmod_proxy模块,将PROXY_WORKER_MAX_NAME_SIZE设置为大于96个字符,然后将其安装到我的Apache 2.4。 我怎样才能做到这一点?