You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache2配置:实现每个请求重定向至随机生成的子域名

Apache2配置:实现每个请求重定向至随机生成的子域名

嗨,我来帮你搞定这个需求!要实现每个请求都重定向到随机生成的子域名,Apache本身就有办法做到,不需要额外的外部脚本,在Ubuntu 20.04上配置起来很简单,咱们一步步来:

一、启用必要的Apache模块

首先,我们需要用到mod_rewrite(用来做动态重定向规则),如果想要更简洁的唯一标识符,还可以启用mod_unique_id。执行以下命令启用模块并重启Apache:

# 启用mod_rewrite(必选)
sudo a2enmod rewrite
# 如果想用自动生成的唯一ID作为子域名,启用这个模块
sudo a2enmod unique_id
# 重启Apache使配置生效
sudo systemctl restart apache2

二、修改你的VirtualHost配置

把原来的Redirect 302 / https://<randomstring>.mysite.com/替换成下面的动态重定向规则,两种方案任选其一:

方案1:用「客户端IP+时间戳」生成子域名

这个方案满足你提到的指纹需求,同一客户端不同时间请求会得到不同子域名,不同客户端的子域名也会不同。修改后的完整VirtualHost配置如下:

<VirtualHost *:443>
ServerName mysite.com

# 开启重写引擎
RewriteEngine On
# 捕获客户端IP,将IP中的点替换为短横线(子域名不能包含点),再拼接时间戳
RewriteCond %{REMOTE_ADDR} ^([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)$
RewriteRule ^(.*)$ https://%1-%2-%3-%4-%{TIME_YMDHMS}.mysite.com$1 [R=302,L]

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log vhost_combined

SSLEngine on
SSLCertificateFile      /etc/apache2/ssl/site.cert
SSLCertificateKeyFile /etc/apache2/ssl/site.key
</VirtualHost>
  • %{REMOTE_ADDR}是客户端IP,通过RewriteCond捕获后把点换成短横线(比如192.168.1.1变成192-168-1-1)
  • %{TIME_YMDHMS}是Apache内置的时间变量,格式为YYYYMMDDHHMMSS(比如20240520143025)
  • 最终生成的子域名类似192-168-1-1-20240520143025.mysite.com

方案2:用Apache自动生成的唯一ID作为子域名

如果你不需要IP和时间的指纹信息,只想快速得到一个全局唯一的随机字符串,可以用mod_unique_id生成的%{UNIQUE_ID}变量,配置更简单:

<VirtualHost *:443>
ServerName mysite.com

# 开启重写引擎
RewriteEngine On
# 直接用UNIQUE_ID作为子域名,每个请求的ID都是唯一的
RewriteRule ^(.*)$ https://%{UNIQUE_ID}.mysite.com$1 [R=302,L]

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log vhost_combined

SSLEngine on
SSLCertificateFile      /etc/apache2/ssl/site.cert
SSLCertificateKeyFile /etc/apache2/ssl/site.key
</VirtualHost>

%{UNIQUE_ID}是Apache自动生成的16位左右的随机字符串(比如ZkX7a-abc123-def),完全符合子域名的命名规则。

三、关键前提:配置泛域名解析

不管用哪种方案,你都需要在域名服务商那里配置*.mysite.com的泛域名解析,指向你的服务器IP。否则重定向后的子域名会无法访问,导致404错误。

四、验证配置

修改完配置后,先检查语法是否正确:

sudo apache2ctl configtest

如果输出Syntax OK,就重启Apache生效:

sudo systemctl restart apache2

现在每次访问mysite.com都会被重定向到一个独一无二的子域名啦!

备注:内容来源于stack exchange,提问作者Mnemosyne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 08:27:37