当我尝试将apache 2.2configuration为代理服务器时,我遇到了一个问题。 我有一个应用程序运行在我的后端服务器http://internal.mydomain.com/App1/ ,现在这个URL将成为$URL ,因为我是一个新人在这里,我无法在我的第一篇文章发布超过2个url。 如果在我的代理服务器上,我使用下面的configuration一切工作正常 UseCanonicalName off UseCanonicalPhysicalPort off ProxyPreserveHost On ProxyPassReverseCookieDomain internal.mydomain.com external.mydomain.com ProxyPass /App1/ $URL connectiontimeout=10 timeout=60 ProxyPassReverse /App1/ $URL 要访问的URL是external.mydomain.com/App1/ 但是,我的老板想要有一个不同的URL,像external.mydomain.com/my/app1/ ,所以我尝试了以下configuration UseCanonicalName off UseCanonicalPhysicalPort off ProxyPreserveHost On ProxyPassReverseCookieDomain internal.mydomain.com external.mydomain.com ProxyPass /my/app1/ $URL connectiontimeout=10 timeout=60 ProxyPassReverse /my/app1/ $URL 这应该工作,但是当我加载网页,后端服务器正在回答这个 Cache-Control: private Content-Type: text/html; charset=utf-8 Location: /App1/StartPage.aspx Server: Microsoft-IIS/8.5 X-AspNet-Version: 4.0.30319 […]
我试图在Apache2反向代理背后使用Docker来build立一个Shopware站点。 由于Shopware软件出于某种原因将其后端主机“ http://127.0.0.1:18084 ”放入发送给浏览器的JavaScript中,我试图用mod_substitute将其replace为外部主机名: ProxyPass / http://127.0.0.1:18084/ ProxyPassReverse / http://127.0.0.1:18084/ <Location /> AddOutputFilterByType SUBSTITUTE text/html application/javascript Substitute "s!127.0.0.1:18084!my.real.domain.de!in" </Location> 这是行得通的,即主机名被replace。 但是,有些JavaScript文件是使用分块编码发送的,这会导致浏览器出现问题(从JS控制台输出): GET http://my.real.domain.de/engine/Library/ExtJs/ext-all.js?201611281529 net::ERR_INCOMPLETE_CHUNKED_ENCODING 我的第一个想法是replace与块长度混乱,但是当我删除Substitute线时也会出现这个问题。 只是有一个AddOutputFilterByType行的内容types的application/javascript导致的问题。 反向代理Apache是2.4.7版本,后端apache是2.4.18。 我做错了什么,或者这是一个Apache的问题? (有一些Apache的反向代理搞乱了2.2中的最后一个,空的块,但我认为这应该是现在修复) 更新: ezra_s指出,我应该确保浏览器caching不会发挥到这一点。 我使用curl检查: 在主机conf中没有AddOutputFilterByType和没有Substitute行,JS文件被完全传输(大约1259k字节)。 只需启用AddOutputFilterByType行,就可以得到以下输出: here:~ tos$ curl http://my.real.domain.de/engine/Library/ExtJs/ext-all.js?201611281529 /* This file is part of Ext JS 4.1 Copyright (c) 2011-2012 Sencha Inc Contact: http://www.sencha.com/contact GNU […]
使用Apache 2.4.25(Windows)和后端服务器Tomcat 8(Windows)。 我们有一些客户端软件可以使用HTTPS在通过Apache代理到Tomcat的authentication会话上上传文件。 但是,如果未使用已validation的会话(或会话超时),则后端Tomcat服务器将发送HTTP 401响应。 但是,Apache向客户端返回502错误。 Tomcat访问日志: 127.0.0.1 – – [21/Apr/2017:18:30:38 +0000] "POST /upload/10507.wav HTTP/1.1" 401 39 Apache访问日志: 10.8.21.23 – – [21/Apr/2017:18:30:27 +0000] "POST /upload/10507.wav HTTP/1.1" 502 232 14030 Apache错误日志: [Fri Apr 21 18:30:39.770715 2017] [proxy:error] [pid 33652:tid 120896] (OS 10053)An established connection was aborted by the software in your host machine. : [client […]
我有一个运行在Apache服务器后面的Tomcat服务器上的Web应用程序,我使用mod_proxy将请求从httpd转发到tomcat服务器。 httpd服务器正在使用mod_auth_tkt进行身份validation,将有关用户的信息存储在环境variablesREMOTE_USER中。 我把这个variables从httpd传递给使用mod_rewrite的tomcat服务器,将其保存为头(X-Forwarded-User)。 ProxyPass设置为 httpd_server/app/ -> tomcat_server/app/ 这是vhost.conf: <Location /> RewriteEngine On RequestHeader unset X-Forwarded-User RewriteCond %{LA-U:REMOTE_USER} (.+) RewriteRule .* – [E=RU:%1,NS] RequestHeader add X-Forwarded-User %{RU}e </Location> <IfModule mod_proxy.c> ProxyPreserveHost On <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass /app/ http://127.0.0.1:8084/app/ ProxyPassReverse /app/ http://127.0.0.1:8084/app/ </IfModule> 这完美的作品。 但是,如果尝试将ProxyPass更改为 httpd_server/ -> tomcat_server/app/ 所以把vhost.conf改成: ProxyPass / http://127.0.0.1:8084/app/ […]
我试图在Apache中设置代理,如下所示: <VirtualHost *:80> ServerName test.public.domain … RewriteRule "^/dir/(.*)" "http://x-service.local/$1" [P,L] … 在同一台服务器上还有另一个虚拟主机configuration: <VirtualHost *:80> ServerName x-service.local … 在Apache服务器上的/etc/hosts我有以下条目: x-service.local 127.0.0.1 当我从我的工作站curl test.public.domain/dir/xxx我得到5xx代码。 当我从服务器本身curl x-service.local/xxx ,我得到了200个代码。 当我改变 x-service.local 127.0.0.1 至 x-service.local 192.168.1.1 curl test.public.domain/dir/xxx工作正常。 192.168.1.1是服务器接口的IP地址。 apache听取0.0.0.0:80 没有防火墙 看起来像代理到域parsing为回送接口由于某种原因不起作用。 我不明白为什么我想知道如何使它工作,因为这样的设置将简化我的configuration多个服务器。
这是一个特殊情况,我在我的tomcat前面使用Apache mod_proxy ,并且Apache也使用mod_header添加了带有mod_headers的 RequestHeader。 如果特殊字符在URI中,则它们被读取为ISO-8859-1 。 即使我在规则中写下了一个特殊的价值,比如“hélo”。 如果我的conf文件保存为ISO-8859-1 ,那么确定,但是如果conf文件保存为UTF-8 ,那么它就是KO(在运行时变成)。 我没有find这个编码configuration。 我尝试在Windows和Linux的Apache服务器上。 这里的configuration文件: <VirtualHost *:80> ServerName apache.convertigo.net ProxyPass / http://httpbin.org/anything/ ProxyPassReverse / http://httpbin.org/anything/ RewriteEngine On RewriteRule ^(.*)$ – [E=X_REQUEST_URI:%{REQUEST_URI},E=X_REQUEST_HOST:%{HTTP_HOST},E=X_HTTPS_STATE:%{HTTPS}] RequestHeader set x-request-uri "%{X_REQUEST_URI}e" env=X_REQUEST_URI RequestHeader set x-request-host "%{X_REQUEST_HOST}e" env=X_REQUEST_HOST RequestHeader set x-https-state "%{X_HTTPS_STATE}e" env=X_HTTPS_STATE RequestHeader set x-frontal "apache" RequestHeader set x-helo "hélo" </VirtualHost> 这里是一个testingURL,它回显URI(请参阅X-Request-Uri ): […]
我在httpd.conf中有一个全局的proxypass规则 全球一级的规则 ProxyPass /test/css http://myserver:7788/test/css ProxyPassReverse /test/css http://myserver:7788/test/css 我有一个虚拟主机 Listen localhost:7788 NameVirtualHost localhost:7788 <VirtualHost localhost:7788> Alias /test/css/ "C:/jboss/server/default/deploy/test.ear/test-web-app.war/css/" </VirtualHost> 我想禁用在这个虚拟主机上应用的所有全局代理通行证规则? NoProxy似乎不工作。 (我想这样做的原因是我有以下的全局规则,如果在这个虚拟主机中应用,创build一个502代理循环 #pass all requests to application server ProxyPass /test http://localhost:8080/test ProxyPassReverse /test http://localhost:8080/test ) 我想要做的是,使用apache服务所有静态内容(如css),同时仍然代理其余的请求到应用程序服务器。
有时我通过https查看我的网站时遇到以下错误(在apache的error.log中): (502)Unknown error 502: proxy: pass request body failed to xxx.xxx.xxx.xxx:443 我不完全确定这是什么,为什么发生,这也不一致。 请求路由是: 浏览器 代理服务器(apache mod_proxy + mod_ssl) 负载平衡器(aws) Web服务器(Apache与mod_ssl) 代理服务器上的configuration如下: <VirtualHost *:443> ProxyRequests Off ProxyVia On ServerName www.xxx.co.uk ServerAlias xxx.co.uk <Directory proxy:*> Order deny,allow Allow from all </Directory> <Proxy *> AddDefaultCharset off Order deny,allow Allow from all </Proxy> ProxyPass / balancer://cluster:443/ lbmethod=byrequests ProxyPassReverse / […]
我们使用一个服务,每个IP分配给我们一定数量的请求,并且允许我们设置5个具有这种限制的IP(我知道,似乎很愚蠢,他们不能在一个IP上限制5倍的限制)。 假装我有一个在互联网上有以下地址的Linux机器:66.249.90.104 – 这是一个谷歌的IP,不是我的…所以随时尝试侵入它:) 我将apache + mod_proxy设置为转发代理(ProxyRequests On)。 即你可以设置Firefox使用66.249.90.104:8080作为代理,所有的Firefox交通出来为66.249.90.104。 到现在为止还挺好。 问题: 现在我添加更多的别名界面,所以总的看起来像这样: eth0:66.249.90.104 eth0:1 66.249.90.105 eth0:2 66.249.90.106 eth0:3 66.249.90.107 eth0:4 66.249.90.108 我运行一个绑定到所有接口的apache + mod_proxy(单一的apache实例),但不pipe我连接哪个地址来使用转发代理,所有stream量都以66.249.90.104 我也试过运行5个不同的apach,每个绑定到它自己的接口,但仍然通过66.249.90.104发送出站请求。 我希望得到它的工作如下: 我连接到66.249.90.108,并作出代理请求,它出去了66.249.90.108。 我连接到66.249.90.107,并作出代理请求,它出去了66.249.90.107。 等等 有没有其他人不得不处理这个问题? 后退解决scheme将是在5个独立的盒子上运行Apache,但我更喜欢它在一个盒子上工作。 谢谢!
任何人都知道如何configuration热备用(+ H)mod_proxyfunction,以便在closures期间立即发生接pipe(即使没有一个用户接收502)错误? 我们不是在寻找真正的负载均衡,我们只是希望辅助服务器在我们closures主服务器的时候接pipe。 问题是,无论什么时候主服务器出现故障,我都可以在第二台服务器实际接pipe之前,发送一个无效的请求,导致502 HTTP错误到达terminal用户。 Listen 80 <VirtualHost 127.0.0.1:80> ServerName domain.com ProxyPass / balancer://balance/ <Proxy balancer://balance/> BalancerMember http://primary_ip:80 BalancerMember http://secondary_ip:80 status=+H </Proxy> </VirtualHost>