标签: mod-proxy

mod_proxy——我应该紧张吗?

据我所知,我在我的 Apache 生产服务器上禁用了所有 mod_proxy 的东西。测试或确认的合理方法是什么?看看我的 httpd.conf,我可以告诉你,任何包含“代理”的行都会被注释掉,这是值得的。

我问的原因是我今天早上在日志观察报告中看到了这些东西:

 Connection attempts using mod_proxy:
   81.88.124.30 -> 64.12.202.116:443: 1 Time(s)
   81.88.124.30 -> 64.12.202.15:443: 1 Time(s)
   81.88.124.30 -> 64.12.202.1:443: 1 Time(s)
   81.88.124.30 -> 64.12.202.22:443: 1 Time(s)
   81.88.124.30 -> 64.12.202.29:443: 1 Time(s)
   81.88.124.30 -> 64.12.202.36:443: 1 Time(s)
   81.88.124.30 -> 64.12.202.43:443: 1 Time(s)
   81.88.124.30 -> 64.12.202.50:443: 1 Time(s)
   81.88.124.30 -> 64.12.202.8:443: 1 Time(s)

 Requests with error response codes
   403 Forbidden
      64.12.202.116:443: 1 Time(s)
      64.12.202.15:443: 1 Time(s)
      64.12.202.1:443: 1 Time(s)
      64.12.202.22:443: 1 Time(s)
      64.12.202.29:443: 1 Time(s)
      64.12.202.36:443: 1 …
Run Code Online (Sandbox Code Playgroud)

security mod-proxy apache-2.2

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

mod代理在apache上不起作用

我正在尝试在 WHM/CPanel CeEntOS Linux 服务器上安装 Mod_Proxy Apache 模块。这是系统信息:

CentOS release 5.6 (Final)
Server version: Apache/2.2.21 (Unix)
Cpanel::Easy::Apache v3.7.2 rev9999
Run Code Online (Sandbox Code Playgroud)

我安装的目的是,当我在 abc.com 站点上单击一个指向 auto.efg.com 站点的链接(假设它的 IP 地址是 192.168.0.101)时,浏览器将在 auto.efg 上加载应用程序。 com 同时在浏览器的地址栏上维护 abc.com。

所以我跟着这个教程:

http://www.hackersgarage.com/install-mod_proxy-apache-module-on-whmcpanel-ceentos-linux-server.html

所以当我完成它时,我能够做到这一点:

root@ip-xxx-xxx-xxx [/tmp/httpd-2.2.21/modules/proxy]# ls -l           
/usr/local/apache/modules/mod_proxy*

-rwxr-xr-x 1 root root 88708 Jan  5 08:22 /usr/local/apache/modules/mod_proxy.so*
-rwxr-xr-x 1 root root 49654 Jan  5 08:23 /usr/local/apache/modules/mod_proxy_connect.so*
-rwxr-xr-x 1 root root 73196 Jan  5 08:23 /usr/local/apache/modules/mod_proxy_http.so*
Run Code Online (Sandbox Code Playgroud)

现在,按照这些说明操作并尝试重新启动服务器后,出现以下错误:

/etc/init.d/httpd restart
httpd: Syntax error on line 35 of /usr/local/apache/conf/httpd.conf: module proxy_module …
Run Code Online (Sandbox Code Playgroud)

mod-proxy centos5 apache-2.2

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

Apache ReverseProxyPass 重定向到 http 而不是 https

我有一个使用 apache mod_proxy 的反向代理设置:

<VirtualHost *:443>
   ServerName reverse.server.com  
   ProxyPass / http://10.1.9.11:3000/
   ProxyPassReverse / http://10.1.9.11:3000/
   ProxyPreserveHost on
   ...snip ssl stuff...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

这在大多数情况下都能正常工作。问题在于内部服务器何时进行重定向。虽然 proxypassreverse 应该捕获该位置,但它似乎会重定向到http://reverse.server.com而不是https://reverse.server.com。所以它工作了一半,地址正确更改,但协议仍然作为内部服务器。

我不清楚为什么这样做,因为代理连接是 SSL - 有什么想法吗?

https reverse-proxy mod-proxy apache-2.2

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

如何配置 apache 的 mod_proxy_html 作为 ajax 代理?

我正在尝试构建一个网站,让您可以查看和操作来自任何其他网站的任何页面的数据。为此,我必须绕过“ Allow Origin”问题:我正在加载其他域的内容,iframe 并且必须使用从我的域下载的 javascript 来操作其内容。

我的第一次尝试是自己编写一个简单的代理,通过一个用 Java 编码的服务器代理请求其他域页面,该代理不仅提供内容,还重建内容中的链接(src 和 href ),以便这些链接引用的内容也得到通过我手工制作的代理下载。结果还不错,但在 css 和脚本中的 url 有问题。

就在那时,我意识到mod_proxy_html应该完全完成所有这些工作。问题是我无法弄清楚如何让它按预期工作。

假设我的服务器在 my-domain.com 中运行并代理和转换来自另一个域的内容,我会发出这样的请求:

my-domain.com/proxy?url=http://another-domain.com/some/content
Run Code Online (Sandbox Code Playgroud)

我想通过以下方式mod_proxy_html提供内容并重写以下 URL http://another-domain.com/some/content

  1. 绝对 URL 不是来自another-domain.com: 没有重写
  2. 相对于根 url:/other/content->/proxy?url=http://another-domain.com/other/content
  3. 相对网址:other/content->/proxy?url=http://another-domain.com/some/content/other/content
  4. 相对于父网址:../other/content->/proxy?url=http://another-domain.com/some/other/content

url 应该在运行时指定,而不是配置时。

这可以通过 mod_proxy_html 实现吗?谁能提供一个简单的工作配置开始?

编辑 1-第一种方法

以下站点配置适用于在任何地方都使用绝对 url 的站点,例如http://www.huffingtonpost.es/. 你可以在本地主机上尝试这个配置:http://localhost/asset/http://www.huffingtonpost.es/

<VirtualHost *:80>
    ServerName localhost

    LogLevel debug

    ProxyRequests off
    RewriteEngine On
    RewriteRule ^/asset/(.*) $1 [P]
    ProxyHTMLURLMap $1 …
Run Code Online (Sandbox Code Playgroud)

mod-proxy apache-2.2

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

Debian 8/Apache 2 虚拟主机背后的 GitLab CE 7:无法访问资产

在 Debian 8.0 上,我试图让 Apache 2.4.10 作为虚拟主机管理 GitLab CE 7.10 Omnibus 安装。

设定和目标

Apache 2 已经设置并运行了几个看起来像 vhost.example.com.

我想配置 Apache 和 GitLab,以便git.example.com由 Apache 处理以显示 GitLab Web 界面。

为此,我遵循了/sf/answers/1806681341/ 中描述的程序 。

问题

我可以访问 GitLab 的主页git.example.com,但无法访问任何其他资源,例如 CSS 或图标。Apache 日志显示四个错误,它们看起来都像:

[Sun May 10 20:24:57.146329 2015] [authz_core:error] [pid 4141] [client 1.2.3.4:80] AH01630: client denied by server configuration: /opt/gitlab/embedded/service/gitlab-rails/public/assets/application-TOKEN.css, referer: http://git.example.com/
Run Code Online (Sandbox Code Playgroud)

在网上搜索并尝试了几项更改后,我被困在这里。有谁知道如何解决这个问题?

配置文件

此外,这里是我使用的“有趣”配置文件:

/etc/apache2/sites-enabled/git.conf

<VirtualHost git.example.com:80>
    ServerAdmin admin@example.com
    DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public
    ServerName git.example.com
    ServerAlias git.example.com

    ProxyPreserveHost On

    <Location …
Run Code Online (Sandbox Code Playgroud)

debian mod-proxy apache-2.2 gitlab

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

反向代理 SNI 不匹配的 Apache 远程代理

我们设置的 Apache-2.2 和通过另一台设备代理的反向代理存在问题。

流程是:Apache A -> proxy.abc.net -> Apache B

我们在 Apache B 上得到的错误是

通过 SNI 提供的主机名 proxy.abc.net 和通过 HTTP 提供的主机名 backend.abc.net 不同

当前配置

    <VirtualHost frontend.abc.com:80>

    ServerName frontend.abc.com

    SSLEngine on
    SSLOptions +StrictRequire
    SSLProtocol -all +TLSv1
    SSLHonorCipherOrder On
    SSLCipherSuite RC4-SHA:HIGH:!ADH:!MD5
    SSLCertificateFile conf/certs/cert.cer
    SSLProxyCACertificateFile certs/proxy.cer
    SSLCertificateKeyFile conf/certs/cert.pem
    SSLCertificateChainFile conf/certs/chain.cer


    DocumentRoot /foo/bar

    SSLProxyEngine On
    ProxyRequests Off
    ProxyPreserveHost off
    ProxyErrorOverride On
    SetEnv proxy-sendchunked 1

    ProxyRemote "*"  https://proxy.abc.net:8080
    ProxyPass  /foo  https://backend.abc.net:8888/foo  disablereuse=on

</Virtual Host>
Run Code Online (Sandbox Code Playgroud)

添加

SSLProxyProtocol SSLv3
Run Code Online (Sandbox Code Playgroud)

有效,因为它不进行 SNI 检查,但 SSLv3 不是我们必须使用 TLSv1 或更高版本的选项。

reverse-proxy mod-proxy proxypass sni apache-2.2

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

在 Apache 2 后面托管 CUPS 的“正确”方式是什么

我已经尝试了 ProxyPass、ProxyPassReverse 和 ProxyHTMLURLMap 的一些组合,但我仍然没有多少运气。我只是希望能够通过访问 www.printerhost.com/printers/printername 来访问 CUPS 中的打印机,而不必添加端口 631 或让 CUPS 侦听端口 80。

根据要求,这里是配置文件:

LoadModule proxy_html_module modules/mod_proxy_html.so
LoadModule xml2enc_module modules/mod_xml2enc.so

NameVirtualHost *:80

<VirtualHost *:80>
   ServerName blah.yours.com
   JkMount /* balancer 
   JkMount /jkmanager jk-status 
   JkUnMount /cups* balancer
   ProxyRequests Off
   ProxyPass /cups/ http://localhost:631/
   ProxyHTMLURLMap http://localhost:631 /cups
   <Location /cups/>
     ProxyPassReverse /
     ProxyHTMLEnable On
     ProxyHTMLURLMap / /cups/
   </Location>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

cups printing mod-proxy apache-2.2

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

代理:无 HTTP 0.9 请求(无主机线)

我的 error.log 中出现了一堆这样的错误:

[客户端 1.2.3.4] 代理:传入请求上没有 HTTP 0.9 请求(没有主机线路),并且保护软管设置强制 uri / 的主机名为 www.mydomain.com

我的配置基本上是:

ProxyRequests Off

<VirtualHost 1.2.3.4:80>
ServerName www.mydomain.com
DocumentRoot "c:/apache/htdocs"

ProxyPreserveHost On
ProxyPass / http://172.1.1.1/
</VirtualHost>

<VirtualHost 1.2.3.4:443>
ServerName www.mydomain.com
DocumentRoot "c:/apache/htdocs"
# SSL Stuff

ProxyPreserveHost On
ProxyPass / http://172.1.1.1/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

有人知道如何消除这些警告吗?

mod-proxy apache-2.2

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

Apache:尊重 proxy-pass 中的 DNS ttl

我们\xe2\x80\x99正在尝试设置一堆Apache 2.4.18来代理将其收到的请求传递到我们合作伙伴的上游服务器。我们的合作伙伴使用 Amazon\xe2\x80\x99s Elastic Load Balancing,因此我们对他们服务器的唯一了解就是其 DNS 名称。

\n\n

DNS 记录的 TTL 是 60 秒,我想知道 Apache 是否可以遵守该 ttl,只要 DNS 记录有效就保持连接处于活动状态,然后在 TTL 过期时请求转换。

\n\n

每次上游需要资源时,使用 mod_proxy DisableReuse = on 强制打开一个新连接。只要底层操作系统执行 DNS TTL 缓存,就可以实现这一目的。否则,每次需要新资源时,Apache 都会强制发出新的 DNS 请求,从而增加响应时间。

\n\n

我\xe2\x80\x99ve想过使用mod_proxy ttl和超时参数,但我认为我\xe2\x80\x99m没有正确解决问题。根据文档, mod_proxy\xe2\x80\x99s 超时参数控制套接字等待来自上游的数据的时间,但 I\xe2\x80\x99m 不确定 Apache 实例是否会关闭连接并打开一个新连接。此外,使用超时很容易出错,因为较低的值可能会向客户端发送错误的答案。

\n\n

我\xe2\x80\x99已经花了一些时间尝试解决这个设置,但没有任何乐趣。是否有任何特殊设置可以满足该场景?或者也许我\xe2\x80\x99已经跳过了一些东西?任何帮助,将不胜感激。

\n\n

最好的,

\n\n

古施陶

\n

domain-name-system mod-proxy apache-2.4

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

Apache2 mod_substitute 无法在 &lt;Location&gt; 中工作

我有一个正在工作的反向代理,它仅在我的站点中的特定位置上处于活动状态,在本例中例如:www.example.com/reverseproxy/site1我正在反向代理 site1。我想替换每个代理页面正文的某些部分,所以我尝试使用 mod_substitute,问题是我无法让它在<Location /reverseproxy>

这是我的 httpd(启用了 SSL):

<VirtualHost _default_:443> 

    ProxyPassInterpolateEnv On
    RewriteEngine On

    ... Some rewrite rules
    RewriteRule /?reverseproxy/http(s*):/([^\/]*)/*(.*) "http$1://$2/$3" [P]
    SSLProxyEngine On
    ProxyPassReverse "/reverseproxy/http${ssl}://${page}" http${ssl}://${page} interpolate

    SetOutputFilter INFLATE;proxy-html;SUBSTITUTE;DEFLATE;
    ProxyHTMLInterp On
    ProxyHTMLExtended Off

    ...Some ProxyURLMap
    AddOutputFilterByType SUBSTITUTE text/html
    Substitute "s|<body>|<body1>|"
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

这个替代品确实有效,但它适用于所有页面,而不仅仅是/reverseproxy. 当我尝试将其放入时,<Location /reverseproxy>它不起作用,它只是忽略它:

<Location /reverseproxy>
AddOutputFilterByType SUBSTITUTE text/html
Substitute "s|<body>|<body1>|"
</Location>
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

我尝试添加

 RequestHeader unset Accept-Encoding
Run Code Online (Sandbox Code Playgroud)

在标签之外<Location>但它不起作用

我尝试添加这个

SetOutputFilter SUBSTITUTE;DEFLATE
Run Code Online (Sandbox Code Playgroud)

<Location /reverseproxy>标签中但没有运气

正如有人建议尝试使用这个过滤器链

FilterDeclare filter
FilterProvider filter SUBSTITUTE …
Run Code Online (Sandbox Code Playgroud)

mod-rewrite reverse-proxy mod-proxy apache-2.4 apache2

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