使用Apache将一个域的所有子域代理到另一个域
我正在尝试使用Apache构建一个反向代理。 我的目标是将使用Apache将一个域的所有子域代理到另一个域,apache,reverse-proxy,subdomain,wildcard-subdomain,Apache,Reverse Proxy,Subdomain,Wildcard Subdomain,我正在尝试使用Apache构建一个反向代理。 我的目标是将.domain.com/file.html格式的所有请求代理到www.domain.com//file.html 我需要捕获原始URL的,并使用它来构建目标URL 我假设我需要一个Apache指令,它可以匹配整个URL上的正则表达式,而不是%{HTTP_HOST}之后的URL部分,因为我的目标URL包含原始URL的子域。由于这个原因,我不能使用ProxyPassMatch指令,因为它只匹配%{HTTP\u HOST}之后的URL部分 另一
.domain.com/file.html
格式的所有请求代理到www.domain.com//file.html
我需要捕获原始URL的
,并使用它来构建目标URL
我假设我需要一个Apache指令,它可以匹配整个URL上的正则表达式,而不是%{HTTP_HOST}
之后的URL部分,因为我的目标URL包含原始URL的子域。由于这个原因,我不能使用ProxyPassMatch
指令,因为它只匹配%{HTTP\u HOST}
之后的URL部分
另一种选择是使用尽可能多的VirtualHost
节作为我的子域。但是这个解决方案当然没有意义,因为我的子域会不断增加
关于如何解决这个问题有什么建议吗?好的,我用重写规则解决了这个问题
# Requires Apache module ``proxy_http``, ``rewrite``
<VirtualHost *:80>
ServerName primary.domain.com
ServerAlias *.domain.com
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
RewriteEngine On
RewriteCond %{HTTP_HOST}/%{REQUEST_URI} ^(.*)\.domain\.com/(.*)$
RewriteRule (.*) http://www.domain.com/%1%2 [P]
</VirtualHost>
#需要Apache模块``代理` http```重写``
ServerName primary.domain.com
ServerAlias*.domain.com
代理请求关闭
命令拒绝,允许
通融
重新启动发动机
RewriteCond%{HTTP\u HOST}/%{REQUEST\u URI}^(.*)\.domain\.com/(.*)$
重写规则(.*)http://www.domain.com/%1%2 [P]
基本上是这样的:
匹配URL与.domain.com匹配的所有传入请求/RewriteCond
将请求代理到URLRewriteRule
,其中http://www.domain.com/%1/%2
和%1
分别是原始请求的子域和请求uri%2
重写规则中%1
和%2
之间有一条斜线?请求Uri(%2
)已经包含斜杠,因此不需要斜杠。不过,在我的解释中,我加入了它,使之更加明确。