标签: mod-proxy

在Apache中混合使用RewriteRule和ProxyPass

我正在努力调试今天与混合mod_proxymod_rewrite一起相关的问题,我最终不得不使用balancer://myclusterRewriteRule来停止从Apache接收404错误.我有两个问题:

1)有没有其他方法可以让重写的URL通过平衡器而不添加balancer://myclusterRewriteRule

2)有没有办法ProxyPass<Proxy>or或RewriteRule?中定义我定义的所有参数(stickysession = JSESSIONID | jsessionid scolonpathdelim = On lbmethod = bytraffic nofailover = Off)?我担心匹配新的请求RewriteRule不会以与通过的方式相同的方式进行负载平衡ProxyPass(例如/app1/something.do)?

以下是httpd.conf的相关部分.我正在使用Apache 2.2.

<Proxy balancer://mycluster>
    Order deny,allow
    Allow from all

    BalancerMember ajp://my.domain.com:8009 route=node1
    BalancerMember ajp://my.domain.com:8009 route=node2
</Proxy>

ProxyPass /app1 balancer://mycluster/app1 stickysession=JSESSIONID|jsessionid scolonpathdelim=On lbmethod=bytraffic nofailover=Off
ProxyPassReverse /app1 ajp://my.domain.com:8009/app1
Run Code Online (Sandbox Code Playgroud)

...

RewriteRule ^/static/cms/image/(.*)\.(.*) balancer://mycluster/app1/$1.$2 [P,L]
Run Code Online (Sandbox Code Playgroud)

apache mod-rewrite load-balancing apache2 mod-proxy

5
推荐指数
1
解决办法
1万
查看次数

如何配置mod_proxy来阻止除一个以外的每个站点

我正在尝试设置mod代理来阻止除特定域之外的所有流量.我可以使用ProxyBlock指令将其配置为阻止单个域,我可以使用ProxyBlock*阻止所有内容.有没有办法阻止除一个域之外的所有内容?

谢谢,

-安德鲁

apache proxy mod-proxy

5
推荐指数
1
解决办法
1万
查看次数

Apache反向代理:如何将外部站点中的相对URL重定向回自身?

我需要绕过跨站点脚本限制,以便在用户点击我在iframe(external.com/onlyforme)中加载的外部站点的链接时向用户显示地图.我了解到,最简单的方法是设置反向代理,以便Apache在访问local.com/external时检索external.com/onlyforme,并使其显示为来自我的域.

这主要有效,但是当external.com/onlyforme/index.html尝试访问external.com/onlyforme/site_media/script.js时,会被重定向到local.com/site_media/script.js,这不是我想要的.相反,我希望将其重定向到external.com/onlyforme中的正确URL,以便外部站点按预期工作.

我怎样才能做到这一点?

我在我的httpd.conf中有这个,在任何其他配置语句之外:

ProxyRequests Off
ProxyPass /external/ http://www.external.com/onlyforme
ProxyPassReverse /external/ http://www.external.com/onlyforme
Run Code Online (Sandbox Code Playgroud)

我正在运行Apache 2.2.

apache mod-proxy cross-domain cross-domain-proxy

5
推荐指数
1
解决办法
9539
查看次数

使用AJP连接器和mod_proxy在Tomcat前面的Apache出错

我在一组三个tomcat6服务器前面有一个Apache服务器(服务器版本:Apache/2.2.22(Ubuntu)).Apache使用mod_proxy和AJP连接器设置为负载均衡器:

<VirtualHost *:80>
    ProxyRequests off        
<Proxy balancer://mycluster>
    BalancerMember ajp://localhost:8009 keepalive=On retry=1 timeout=15 ping=1
    BalancerMember ajp://10.0.3.152:8009 keepalive=On retry=1 timeout=15 ping=1
    BalancerMember ajp://10.0.3.153:8009 keepalive=On retry=1 timeout=1 ping=15

    Order Deny,Allow
    Deny from none
    Allow from all
    ProxySet lbmethod=byrequests
</Proxy>

    <Location /balancer-manager>
            SetHandler balancer-manager 
            Order deny,allow
            Allow from all
    </Location>

    ProxyPass /balancer-manager !
    ProxyPass / balancer://mycluster/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

Tomcat使用以下JAVA_OPTS运行:

-Xms2048m -Xmx2048m -XX:NewSize=256m 
-XX:MaxNewSize=356m -XX:PermSize=256m -XX:MaxPermSize=356m
Run Code Online (Sandbox Code Playgroud)

系统运行正常,但过了一段时间我从Tomcat收到这些错误:

org.apache.jk.common.ChannelSocket processConnection 
WARNING: processCallbacks status 2
Run Code Online (Sandbox Code Playgroud)

而这个来自Apache:

[error] ajp_read_header: ajp_ilink_receive failed
[error] (70007)The timeout specified has expired: proxy: read …
Run Code Online (Sandbox Code Playgroud)

java apache tomcat mod-proxy ajp

5
推荐指数
1
解决办法
7047
查看次数

在子目录中为node.js配置apache2

我有一个运行的网站,比方说,example.com它使用apache.我正在写的,我想通过访问node.js的一个应用程序example.com/app,并有我的node.js服务器认为example.com/app/example.com/app/users/users.我尝试通过ProxyPass使用我在网上找到的一些教程来做到这一点,但这并不能完全给我我正在寻找的东西(除非我没有设置正确).

这是ProxyPass我正在使用的:

ProxyPass /app/ http://127.0.0.1:3000/
ProxyPassReverse /app/ http://127.0.0.1:3000/
Run Code Online (Sandbox Code Playgroud)

但是当我去example.com/app/users我的节点服务器认为我正在尝试访问//users哪个显然会抛出一个404.任何帮助,将不胜感激.谢谢.

apache debugging reverse-proxy mod-proxy node.js

5
推荐指数
0
解决办法
572
查看次数

apache错误日志中的Mod群集代理超时

在我们的环境中,我们在错误日志中始终获得这些条目

[Sun Dec 22 20:29:43 2013] [error] (70007)The timeout specified has expired: ajp_ilink_receive() can't receive header
[Sun Dec 22 20:29:43 2013] [error] ajp_read_header: ajp_ilink_receive failed
[Sun Dec 22 20:29:43 2013] [error] (70007)The timeout specified has expired: proxy: read response failed from (null) (xx.xx.xx.xx)
[Sun Dec 22 20:30:01 2013] [error] (70007)The timeout specified has expired: ajp_ilink_receive() can't receive header
Run Code Online (Sandbox Code Playgroud)

如果这些错误同时出现在所有节点上,则站点将抛出998响应代码,直到重新启动使这些错误消失.Apache正在与后端jboss服务器进行通信.

可能导致这些问题的原因.根据我的观察,这可能是由于webservice调用延迟导致AJP连接终止.

如果我错了,请纠正我,如何永久修复此问题.

谢谢.

apache jboss mod-proxy jboss5.x

5
推荐指数
1
解决办法
1万
查看次数

apache2 mod_rewrite基于语言然后代理

我正在尝试将访问www.server.com的用户重定向到浏览器的首选语言设置.

当用户在www.server.com/<lang>下面的情况下输入/ es为西班牙语时,它们被正确地代理到智能翻译服务器.但是,当用户在其浏览器中设置了语言首选项时,他们会遇到重定向循环.

我有以下配置:

<VirtualHost *:8008>
        ServerName www.server.com
        ServerAlias www

        ProxyPreserveHost On

        RewriteEngine On

        RewriteCond %{HTTP:Accept-Language} ^es [NC]
        RewriteRule ^/$ es/ [R=301,L]

      <Proxy http://server.sl.smartling.com/*>
          Allow from all
      </Proxy>

      <LocationMatch "/es">
          ProxyPass http://server.sl.smartling.com/es
          ProxyPassReverse http://server.sl.smartling.com/es
          Header add Host "www.server.com"
          RequestHeader set Host "www.server.com"
      </LocationMatch>

  DocumentRoot /www
  <Directory /> 
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride all
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order …
Run Code Online (Sandbox Code Playgroud)

apache mod-rewrite apache2 mod-proxy smartling

5
推荐指数
1
解决办法
182
查看次数

如何在Apache上修改代理图像头?

我们将图像代理为许可内容,并需要将max-age标头添加到代理图像.尝试修改.htaccess,但它没有工作,并怀疑这是由于代理的图像文件夹不是服务器上的实际目录.

首先,代理设置在apache2.conf:

# Image Proxy
ProxyPass /photo http://photo.licensor.com
ProxyPassReverse /photo http://photo.licensor.com
Run Code Online (Sandbox Code Playgroud)

.htaccess在网站的public_html目录下进行了多次修改.似乎修改代理图像的max-age标头的条件永远不会被Apache识别,因为/photo它不是真正的目录.

我真的很想使用/photo不真实的目录来定位代理的图像.

php apache .htaccess header mod-proxy

5
推荐指数
1
解决办法
208
查看次数

ws protocol和apache mod_proxy_wstunnel配置:错误500

尝试通过我的Apache2服务器访问ws:// localhost:8080 /时收到错误500.该服务器运行OpenSuse Leap 42.1和Apache 2.4.16.

启用了这些Apache2模块:mod_proxy,mod_proxy_http,mod_proxy_wstunnel.

从本地网络调用请求时,一切正常.网址示例:http://<myhost-ip-address>/api/ws/<some-url>.它返回状态101和响应:Upgrade: websocket.没关系.

来自外部网络的同类请求失败.网址示例:ws://www.mysite.com/api/ws/<some-url>.它返回错误500.

Apache访问日志包含: GET /api/ws/<some-url> HTTP/1.1" 500 ...

Apache错误日志包含: [proxy:warn] AH01144: No protocol handler was valid for the URL /api/ws/<some-url>. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

我的httpd.conf:

<VirtualHost *:80>
ServerName mysite.com
ServerAlias mysite.com
# Redirection for ws protocol
ProxyPreserveHost On
ProxyVia full
ProxyRequests OffHere
RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/api/ws/(.*)           [NC]
RewriteCond …
Run Code Online (Sandbox Code Playgroud)

apache mod-proxy websocket

5
推荐指数
1
解决办法
2056
查看次数

ProxyPass将304状态修改为200并添加内容类型

问题

我正在通过Apache2反向代理运行节点服务器(sqlpad).

在某些请求中,节点服务器返回304状态代码,Content-Type直接访问时为no .但是,当通过反向代理访问时,状态代码将更改为200,并Content-Type添加值为text/html.添加它Content-Type会导致应用程序无法加载JS和CSS,因为X-Content-Type-Options: nosniff它位于标题中.

我真的不想对节点服务器进行更改,因为它不是我的项目.我想用反向代理配置解决这个问题.

如何配置Apache2 ProxyPass以转发原始304响应,或者至少,不用Content-Type缺省填写缺失?

以下是我的具体内容:

组态

# /etc/apache2/sites-enabled/xxxx.conf
...
<Location "/sqlpad">
  ProxyPass http://x.x.x.x:xxxx # IP address of Node server
  ProxyPassReverse http://x.x.x.x:xxxx # IP address of Node server
</Location>


# /etc/apache2/apache2.conf (comments removed)

ServerName xxxxx.com
DefaultRuntimeDir ${APACHE_RUN_DIR}
PidFile ${APACHE_PID_FILE}
Timeout 600
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include …
Run Code Online (Sandbox Code Playgroud)

reverse-proxy apache2 mod-proxy proxypass

5
推荐指数
1
解决办法
334
查看次数