80 linux subdomain apache-2.2 apache-2.4
我有一些子域要重定向到同一服务器上的特定端口。说我有
dev.mydomain.com
Run Code Online (Sandbox Code Playgroud)
我想dev.mydomain.com透明地重定向到mydomain.com:8080浏览器的 url,我想保留原始子域名。
如何使用 Apache 2.2 执行此操作?我在默认端口上运行 Apache 2.2 80。我无法弄清楚要实现此目的的写入配置。
我已经设置dev.mydomain.com为在 DNS 中解析为mydomain.com.
这是针对具有不可路由 IP 地址的 Intranet 开发服务器,因此我不太担心会危及面向公众的服务器的漏洞利用和安全性。
小智 80
在迈尔斯·埃里克森 (Miles Erickson) 朝着正确的方向前进后,这是我最终想到的。我希望地址栏反映请求的原始子域/域,而不是重定向的服务器和端口,但他让我走上了正确的路径,让 Google 找到了一个解决方案VirtualHost,我终于找到了一个包含mod_proxy.
首先,确保mod_proxy已启用:
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests
sudo systemctl restart apache2
Run Code Online (Sandbox Code Playgroud)
接下来,将以下内容添加到您的站点配置中(例如,/etc/apache2/sites-available/000-default.conf):
<VirtualHost *:80>
ServerAdmin me@mydomain.com
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>
Run Code Online (Sandbox Code Playgroud)
M.A*_*pon 14
在终端上运行以下行(正确指定您的域和子域名)
sudo nano /etc/apache2/sites-available/subdomain.example.com.conf
Run Code Online (Sandbox Code Playgroud)
粘贴以下代码并根据您的要求进行更改
<VirtualHost *:80>
ServerAdmin admin@example.com
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>
Run Code Online (Sandbox Code Playgroud)
在终端上运行以下几行(正确指定您的域和子域名)
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2ensite subdomain.example.com.conf
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)
Sky*_*awk 10
假设 dev.mydomain.com 可以解析为 mydomain.com 的 IP,您可以将以下内容添加到 httpd.conf:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName dev.mydomain.com
redirect / http://mydomain.com:8080/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
相关的 Apache 文档:
相关问题: 基于主机名的Apache重定向
(注意:这个答案的原始版本错误地建议使用 RedirectMatch,正如@ChrisS 帮助指出的那样,它无法解析 URL 的域部分。)
小智 5
在您的主要 vhost 配置中添加以下几行:
ProxyPreserveHost On
ProxyPass / http://example.com:8080/
ProxyPassReverse / http://example:8080/
Run Code Online (Sandbox Code Playgroud)
请注意,这需要 Apache 上的 mod_proxy。