apachehttpd:使用通配符子域作为代理目标

apachehttpd:使用通配符子域作为代理目标,apache,proxy,virtualhost,Apache,Proxy,Virtualhost,我想创建一个ApacheHttpD虚拟主机,它允许我代理Internet上的任何域,方法是将该域作为ApacheURL的子域(或者,如果您愿意,将其放入路径/参数中,但我想这很快就会变得难看)。示例: “foo.bar.com.proxy.domain.com/login”代理“foo.bar.com/login”(但浏览器仍显示第一个URL) “160.24.32.11.proxy.domain.com”代理“160.24.32.11/login”(但浏览器仍显示第一个URL) 基本上,这

我想创建一个ApacheHttpD虚拟主机,它允许我代理Internet上的任何域,方法是将该域作为ApacheURL的子域(或者,如果您愿意,将其放入路径/参数中,但我想这很快就会变得难看)。示例:

  • “foo.bar.com.proxy.domain.com/login”代理“foo.bar.com/login”(但浏览器仍显示第一个URL)
  • “160.24.32.11.proxy.domain.com”代理“160.24.32.11/login”(但浏览器仍显示第一个URL)
基本上,这样做的结果将是一个代理,它允许访问所有类型的URL,而不需要实际访问这些URL(而Apache显然需要访问权限)。我知道squid和其他一些,但我需要这个基于Apache的解决方案

我让它在每个子域中使用ProxyPass指令。但是,我不希望每个子域都有一个配置文件,因为请求的URL可能事先不知道

我在重写(保留Apache主机;见下文)方面也取得了一些成功,但在使用重定向(基本上每个Web应用都包含重定向)时,这显然会产生问题

<VirtualHost *:443>
    ServerName proxy.domain.com
    ServerAlias *.proxy.domain.com
    ServerAdmin admin@domain.com

    SSLEngine On
    SSLProxyEngine On
    SSLProxyCheckPeerName off
    SSLProxyCheckPeerExpire off
    SSLCertificateFile /usr/local/apache2/conf/ssl/cert.crt
    SSLCertificateKeyFile /usr/local/apache2/conf/ssl/cert.key

    ProxyRequests     Off
    ProxyPreserveHost On
    AllowEncodedSlashes NoDecode

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^(.+)\.proxy\.domain\.com$ [NC]
    RewriteRule ^(.*)$ https://%1$1 [P,L]

    RequestHeader set X-Forwarded-Proto "https"
    RequestHeader set X-Forwarded-Port "443"

    Header set Access-Control-Allow-Origin null
    Header set Access-Control-Allow-Credentials true

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

ServerName proxy.domain.com
ServerAlias*.proxy.domain.com
服务器管理员admin@domain.com
斯伦金安
SSLProxyEngine打开
SSLProxyCheckPeerName关闭
SSLProxycheckpeer关闭
SSLCertificateFile/usr/local/apache2/conf/ssl/cert.crt
SSLCertificateKeyFile/usr/local/apache2/conf/ssl/cert.key
代理请求关闭
代理主机
AllowEncodeDSL节点代码
重新启动发动机
RewriteCond%{HTTP\u HOST}^(+)\.proxy\.domain\.com$[NC]
重写规则^(.*)$https://%1$1[P,L]
RequestHeader集合X-Forwarded-Proto“https”
RequestHeader设置X转发端口“443”
标题集访问控制允许原点为空
标头集访问控制允许凭据为true
命令拒绝,允许
通融
我非常确定我需要使用ProxyPassMatch。由于ProxyPassMatch没有为我提供完整的URL,包括作为代理源的子域,但只提供端口后面的路径,所以我在这里没有任何进展。谢谢你的帮助