问题描述
我想创建一个Apache httpd虚拟主机,通过将该域作为Apache URL的子域(或者,如果愿意,可以将其放入路径/参数中)来允许我代理Internet上的任何域。快速变丑)。例子:
- “ 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(而Apache显然需要访问)。我了解鱿鱼等,但是我需要这个基于Apache的解决方案。
我了解到每个子域都可以使用ProxyPass指令。但是,我也不希望每个子域都有一个配置文件,因为可能事先不知道所请求的URL。
我在重写方面也取得了一些成功(保留Apache主机;请参见下文),但是在具有基本上每个Web应用程序都包含的重定向的情况下,显然很成问题。
<VirtualHost *:443>
ServerName proxy.domain.com
ServerAlias *.proxy.domain.com
ServerAdmin [email protected]
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>
我很确定我需要使用ProxyPassMatch。由于ProxyPassMatch并没有提供完整的URL(包括子域作为代理源),而是仅提供了端口后面的路径,因此我在这里什么都没有。任何帮助表示赞赏。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)