我有一些子域,我想redirect到同一台服务器上的特定端口。 说我有
dev.mydomain.com
我想dev.mydomain.com透明地redirect到mydomain.com:8080 ,我想保留原来的子域名浏览器的url。
我如何用Apache 2.2来做到这一点? 我有默认端口80上运行的Apache 2.2。 我无法找出写configuration来实现这一点。
我已经设置了dev.mydomain.com在DNS中parsing到mydomain.com 。
这是一个intranet开发服务器,具有不可路由的IP地址,所以我不太关心漏洞和安全性,会危及公众面临的服务器。
迈克尔·埃里克森(Miles Erickson)在正确的方向上完成了我终于想到的事情。 我想要地址栏反映请求的原始子域/域,而不是redirect的服务器和端口,但他把我放在正确的path谷歌了解决scheme使用VirtualHost ,我终于find了一个解决scheme,包括使用mod_proxy 。
<VirtualHost *:80> ServerAdmin [email protected] ServerName dev.mydomain.com ProxyPreserveHost On # setup the proxy <Proxy *> Order allow,deny Allow from all </Proxy> ProxyPass / http://localhost:8888/ ProxyPassReverse / http://localhost:8888/ </VirtualHost>
假设dev.mydomain.com可以parsing为mydomain.com的IP,那么可以在httpd.conf中添加以下内容:
NameVirtualHost *:80 <VirtualHost *:80> ServerName dev.mydomain.com redirect / http://mydomain.com:8080/ </VirtualHost>
相关的Apache文档:
相关问题: 基于主机名的Apacheredirect
(注意:此答案的原始版本错误地build议使用RedirectMatch,正如@ChrisS帮助指出的那样,无法分析URL的域部分。)
在主虚拟主机configuration中添加以下几行:
ProxyPreserveHost On ProxyPass / http://example.com:8080/ ProxyPassReverse / http://example:8080/
请注意,这需要Apache上的mod_proxy。
在terminal上运行以下行(正确指定您的域名和子域名)
sudo nano /etc/apache2/sites-available/subdomain.example.com.conf
粘贴以下代码并根据需要进行更改
<VirtualHost *:80> ServerAdmin [email protected] ServerName subdomain.example.com ServerAlias subdomain.example.com ProxyRequests Off #ProxyPass / http://localhost:8080/ <Location /> ProxyPreserveHost On ProxyPass http://example.com:8080/ ProxyPassReverse http://example.com:8080/ </Location> # Uncomment the line below if your site uses SSL. #SSLProxyEngine On </VirtualHost>
在terminal上运行以下行(正确指定您的域名和子域名)
sudo a2enmod proxy sudo a2enmod proxy_http sudo a2ensite subdomain.example.com.conf sudo service apache2 restart
你正在寻找mod_rewrite。 这里是Apache文档的链接,其中包括许多基本和高级configuration的例子。
如果你不能自己解释文档,试试把这个添加到httpd.conf中:
RewriteEngine on RewriteCond %{HTTP_HOST} ^dev\.example\.com$ [NC] RewriteRule ^(.*)$ http://example.com:8080$1 [R=301]
如果这不是一个明确的例子,这里也是一个mod_rewrite初学者指南的链接 。