如何将子域名重定向到同一台服务器上的不同端口?

如何将子域名重定向到同一台服务器上的不同端口?

我有一些子域名,我想重定向到同一台服务器上的特定端口。假设我有

dev.mydomain.com 

我想要dev.mydomain.com透明地重定向到mydomain.com:8080浏览器的url并且我想要保留原始子域名。

我该如何使用 Apache 2.2 来实现这一点?我的 Apache 2.2 在默认端口上运行80。我不知道该如何写入配置才能实现这一点。

我已将dev.mydomain.comDNS 解析设置为mydomain.com

这是针对具有不可路由 IP 地址的内部网开发服务器,因此我不太担心会危及面向公众的服务器的漏洞和安全性。

答案1

解决方案

在 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

接下来,将以下内容添加到您的站点配置中(例如/etc/apache2/sites-available/000-default.conf):

<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>

答案2

在终端上运行以下行(正确指定您的域名和子域名)

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>

在终端上运行以下行(正确指定您的域名和子域名)

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2ensite subdomain.example.com.conf
sudo service apache2 restart

答案3

假设 dev.mydomain.com 可以解析为 mydomain.com 的 IP,您可以将以下内容添加到 httpd.conf:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName dev.mydomain.com
    redirect / http://mydomain.com:8080/
</VirtualHost>

相关 Apache 文档:

  1. 基于名称的虚拟主机创建指南
  2. , 包括虚拟主机名称虚拟主机
  3. 重定向

相关问题: 根据主机名进行 Apache 重定向

(注意:这个答案的原始版本错误地建议使用 RedirectMatch,正如@ChrisS 指出的那样,它无法解析 URL 的域部分。)

答案4

您正在寻找 mod_rewrite。这是 Apache 文档的链接其中包括许多例子基本的先进的配置..

如果您无法自己解释文档,请尝试将其添加到 httpd.conf:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^dev\.example\.com$ [NC]        
RewriteRule ^(.*)$ http://example.com:8080$1 [R=301]    

如果这还不够清楚,下面是一个例子链接至 mod_rewrite 初学者指南也。

相关内容