标签: mod-proxy

mod_proxy 更改无需重启

如何设置一个 apache mod-proxy 服务器来从一个单独的指定服务器提供内容,这样我就可以在不重新启动 apache 的情况下更改从哪个服务器提供内容?

内容服务器会定期更改,要么是为了维护,要么是因为故障。

我有一个不需要在集群中的应用程序,但我希望在主应用程序服务器崩溃时显示静态版本的网页。

我还想要更新服务器上的代码库的选项,测试它,然后切换旧的实时服务器。

我已经设置了 mod_proxy 使用

ProxyPass / http://appserver.com
ProxyPassReverse / http://appserver.com
Run Code Online (Sandbox Code Playgroud)

这有效,但接缝需要使用不同的设置重新启动以改变方向。这违背了在实时服务器上使用它的目的。

我也尝试过 mod_balencer,它非常适合故障转移,但需要重新启动 apache 才能在备份时将其设置回为主应用程序服务器提供服务。

     ProxyPass / balancer://hotcluster/
     <Proxy balancer://hotcluster>
            BalancerMember http://dyn:80 loadfactor=1
            BalancerMember http://basic:80 status=+H
            ProxySet lbmethod=bytraffic
     </Proxy>
Run Code Online (Sandbox Code Playgroud)

有没有办法可以在不重新启动 apache 的情况下设置当前的应用程序服务器?

load-balancing mod-proxy apache-2.2

3
推荐指数
1
解决办法
4840
查看次数

mod_proxy 协议处理程序问题

我正在尝试使用以下规则(基于“使用 Apache 安装 Plone ”)将传入的网络流量转发到我的 Ubuntu 设置上的 Plone 服务器:

<VirtualHost *:80>
 ServerAlias www.mydomain.com

 ProxyRequests Off
 <Proxy *>
   Order deny,allow
   Allow from all
 </Proxy>
  ProxyPreserveHost On
  ProxyPass / http://localhost:7373/VirtualHostBase/http/mydomain.com:80/plonesite/VirtualHostRoot/
  ProxyPassReverse / http://localhost:7373/VirtualHostBase/http/mydomain.com:80/plonesite/VirtualHostRoot/
  #ProxyPass / http://localhost:7373/ukpa/
  #ProxyPassReverse / http://localhost:7373/ukpa/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

然而,这两种变体都会产生内部服务器错误,在日志中显示为:

[警告] 代理:没有协议处理程序对 URL / 有效。如果您使用的是 mod_proxy 的 DSO 版本,请确保使用 LoadModule 将代理子模块包含在配置中。

我可以通过 lynx 使用地址http://localhost:7373/ukpa/在本地浏览到该站点(因此注释掉的尝试只是转发到底部的那个)。

我哪里错了?

mod-proxy apache-2.2

3
推荐指数
1
解决办法
5528
查看次数

禁用子目录的 mod_proxy (apache)

我有一个文件夹用于反向代理的 apache:

<VirtualHost *:80>
 ...
 ProxyPass /site http://server.local:8989/site
 ProxyPassReverse /site http://server.local:8989/site
</VirtualHost *:80>
Run Code Online (Sandbox Code Playgroud)

如何禁用 url 的 /site/IMAGES/* 代理?

mod-proxy apache-2.2

3
推荐指数
1
解决办法
7721
查看次数

&lt;location&gt; 括号中的 SSL mod_proxy 问题

我在让 proxypass 在 apache 中工作时遇到问题。

我的配置文件如下:

<VirtualHost 1.2.3.4:443>

    ServerName example.com
    ServerAlias www.example.org
    ServerAdmin info@example.org
    DocumentRoot /home/admin/web/knyz.org/public_html
    ScriptAlias /cgi-bin/ /home/admin/web/knyz.org/cgi-bin/
    Alias /vstats/ /home/admin/web/knyz.org/stats/
    Alias /error/ /home/admin/web/knyz.org/document_errors/
    #SuexecUserGroup admin admin
    CustomLog /var/log/apache2/domains/knyz.org.bytes bytes
    CustomLog /var/log/apache2/domains/knyz.org.log combined
    ErrorLog /var/log/apache2/domains/knyz.org.error.log
    <Directory /home/admin/web/knyz.org/public_html>
        AllowOverride All
        SSLRequireSSL
        Options +Includes -Indexes +ExecCGI
    </Directory>
    <Directory /home/admin/web/knyz.org/stats>
        AllowOverride All
    </Directory>
    SSLEngine on
    SSLVerifyClient none
    SSLCertificateFile /home/admin/conf/web/ssl.knyz.org.crt
    SSLCertificateKeyFile /home/admin/conf/web/ssl.knyz.org.key
    SSLCertificateChainFile /home/admin/conf/web/ssl.knyz.org.ca
    <IfModule mod_ruid2.c>
        RMode config
        RUidGid admin admin
        RGroups www-data
    </IfModule>
    <IfModule itk.c>
        AssignUserID admin admin
    </IfModule>

    IncludeOptional /home/admin/conf/web/sapache2.knyz.org.conf*

    ##ISSUE …
Run Code Online (Sandbox Code Playgroud)

ssl https mod-proxy mod-ssl apache-2.4

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

Apache mod_proxy 和 Tomcat 8.5 使用 http2

是否可以mod_proxy在带有 http2 协议的 Apache Tomcat 8.5 前面使用?如果是,很高兴看到示例配置。

编辑

具体做法是:是否可能,建议使用http2的客户端和服务器之间(Apache httpd),并继续与数据流ajp之间Apache httpdApache Tomcat

编辑 2

此答案提供了有关该主题的一些详细信息:

/sf/ask/2498837701/

tomcat mod-proxy apache-2.4 http2

3
推荐指数
1
解决办法
3123
查看次数

Apache 2.4.7 mod_proxy_wstunnel 隧道太多(HTTP 以及 WS)

我在 Ubuntu 14.04 LTS 上运行 Apache 2.4.7 作为反向代理。这个 Apache 服务器充当许多不同后端应用程序的入口点,这些应用程序通过<Location>块中不同的 mod_proxy 配置进行访问

我需要提供对使用 WebSocket 的应用程序的反向代理访问。该应用程序是一个 Java Spring 应用程序,它通过 HTTP 提供 HTML 和其他静态文件,然后在页面加载后使用 WebSocket 获取动态数据。

我已经Nginx使用以下配置运行了应用程序:

location /newapp/ {
    proxy_pass http://newapp.example.com:8080/;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,由于需要一个在 Nginx 上不可用的 Apache 身份验证模块,我无法在生产中使用它。

我想要做的是,在伪 Apache-config 中:

<Location /newapp/>
    if not WebSockets:
        ProxyPass http://newapp.example.com:8080/
        ProxyPassReverse /
    else
        ProxyPass ws://newapp.example.com:8080/
        ProxyPassReverse /
</Location>
Run Code Online (Sandbox Code Playgroud)

Apachemod_proxy_wstunnel模块让我觉得这应该是可能的。WebSocket 是在 URL 上访问的/api/socket/...,因此我尝试将ProxyPass使用单独<Location>块的两种类型分开:

<Location /newapp/> …
Run Code Online (Sandbox Code Playgroud)

reverse-proxy mod-proxy apache-2.4 websocket

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

使用 mod_proxy 传递 IP 地址

我有mod_proxy将请求传递给 Tomcat 的Apache 。问题是,当我在 Tomcat 上托管的 Web 应用程序中获取与请求关联的客户端 IP 地址时,它总是返回 127.0.0.1。

是否可以让 Apache 将原始 IP 地址传递给 Tomcat?

tomcat mod-proxy apache-2.2

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

apache 和 mod_proxy:我如何记录选择了哪个工人?

我们在几个 tomcat 前面运行一个 apache 反向代理。有时我们想知道请求被转发到哪个服务器。因为我们使用 mod_proxy_balancer。

我试过

 \"%{X-Forwarded-Server}i\"
Run Code Online (Sandbox Code Playgroud)

但这不起作用。它显示了我的负载均衡器 (apache) 的名称

我如何记录选择了哪个工人?

logging load-balancing mod-proxy apache-2.2

2
推荐指数
1
解决办法
2770
查看次数

apache httpd 不断向陌生的 IP 发送 http 请求

最近我注意到我的服务器通过netstat -na.

为了找出它发送的内容,我尝试了:

tcpdump -i eth0 host 121.11.76.48 -nnvvXSs 1514
Run Code Online (Sandbox Code Playgroud)

并发现它不断向此位置发送 HTTP 请求:

22:55:21.179353 IP (tos 0x0, ttl  64, id 26103, offset 0, flags [DF], proto: TCP (6), length: 296) 192.168.1.13.58155 > 121.11.76.48.80: P, cksum 0x880b (incorrect (-> 0xd884), 1904784743:1904784999(256) ack 915059568 win 46
    0x0000:  4500 0128 65f7 4000 4006 4ce8 c0a8 010d  E..(e.@.@.L.....
    0x0010:  790b 4c30 e32b 0050 7188 b567 368a b370  y.L0.+.Pq..g6..p
    0x0020:  5018 002e 880b 0000 4745 5420 2f20 4854  P.......GET./.HT
    0x0030:  5450 2f31 2e31 …
Run Code Online (Sandbox Code Playgroud)

security mod-rewrite mod-proxy rewritecond apache-2.2

2
推荐指数
1
解决办法
253
查看次数

根据另一个请求头的值在 mod_proxy 上添加一个请求头

我有一台运行 mod_proxy 的服务器,我需要重命名请求标头。更接近原点的代理正在剥离 X-Forwarded-For 标头,但我们需要保留该数据,因此我想将该值添加到不同的标头以允许原点拾取它。

从我对 doco 的阅读来看,无法重命名标头,而且我看不到如何将值传递到 RequestHeader add in mod_headers 中。

mod-proxy requestheader apache-2.2

2
推荐指数
1
解决办法
4930
查看次数

无法配置 apache 以限制通过 IP 访问代理

我在 httpd.conf 中添加了以下内容(在 VirtualHost 之后):

<VirtualHost *:80>
    ServerName XXX.XXX.XXX

    <Directory proxy:>
        Order allow,deny
        Allow from 10.52.208.221
        Allow from 10.52.208.223
        Deny from all
    </Directory>

    ProxyPass / http://XXX.XXX.XXX/

    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^/admin/$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

但是,我可以从其他 IP 访问我的 VirtualHost:

# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 6.4 (Santiago)
# uname -a
Linux XXXXX.XXXXX.XXX 2.6.32-358.18.1.el6.x86_64 #1 SMP Fri Aug 2 17:04:38 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux
# httpd -V
Server version: Apache/2.2.15 (Unix)
Server built:   Aug  2 …
Run Code Online (Sandbox Code Playgroud)

proxy reverse-proxy mod-proxy apache-2.2

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

Apache:使用正则表达式代理内部 URL

我有几个 servlet 侦听无法从外部访问的内部端口。我使用 ApacheProxyPassProxyPassReverse指令从端口 443 安全地为它们提供服务:

ProxyPass         /media http://localhost:9002/
ProxyPassReverse  /media http://localhost:9002/
Run Code Online (Sandbox Code Playgroud)

这工作正常 -https://example.com/mediahttp://localhost:9002/.

当 URL 具有不同部分时会出现问题。例如:

https://example.com/image/IMAGE_NAME_1应该从http://localhost:9002/image/IMAGE_NAME_1.

并且https://example.com/image/IMAGE_NAME_2应该从http://localhost:9002/image/IMAGE_NAME_1.

我尝试了一些变化,包括:

RewriteEngine  on
RewriteRule   ^/image/(.*)$  http://localhost:9002/image/$1 [L,PT]
ProxyPass         /image/ http://localhost:9002/image
ProxyPassReverse  /image/ http://localhost:9002/image
Run Code Online (Sandbox Code Playgroud)

但是这种配置会导致Bad Request浏览器和

Invalid URI in request GET /image/1 HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

在日志中。

如何代理 URL 具有不同部分的内部 servlet?

mod-rewrite mod-proxy apache-2.2

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

Moodle 仅在 IP 上提供服务 - 不适用于 mod_proxy

我正在尝试在 Ubuntu 机器上设置一个 Moodle 服务器,该机器已经通过 Apache 为 Plone & Trac 提供服务。

在我的 Moodle 配置中,我有 $CFG->wwwroot = ' http://www.server-name.org/moodle '

下面的(复杂但有效的)配置适用于前两个,但是当我访问 www.server-name.com/moodle 时,我得到:

检测到访问错误,此服务器只能通过“ http://xxx.xxx.xxx.xxx:8888/moodle ”地址访问,抱歉

然后它转发到 IP 地址,在那里 Moodle 可以正常工作。

我缺少什么才能使服务器名称方法正常工作?


Apache 配置如下:

LoadModule transform_module /usr/lib/apache2/modules/mod_transform.so
Listen 8080
Listen 8888

Include /etc/phpmyadmin/apache.conf

<VirtualHost xxx.xxx.xxx.xxx:8080>

  <Proxy *>
    Order deny,allow
    Allow from all
  </Proxy>

  ProxyPreserveHost On

  <Location />
    ProxyPass http://127.0.0.1:8082/
    ProxyPassReverse http://127.0.0.1:8082/
  </Location>

</VirtualHost>

<VirtualHost xxx.xxx.xxx.xxx:80>
  ServerName  www.server-name.org
  ServerAlias server-name.org

  ProxyRequests Off

  FilterDeclare MyStyle RESOURCE
  FilterProvider MyStyle XSLT resp=Content-Type $text/html
  TransformOptions +ApacheFS …
Run Code Online (Sandbox Code Playgroud)

moodle mod-proxy apache-2.2

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