使用 URL 令牌进行反向代理

使用 URL 令牌进行反向代理

我有一个工作你的安装位于https://example.com,它有一堆可以通过 URL 传递的触发器。

https://example.com/this充当重定向,但如果您this在前缀中添加+so,https://example.com/+this我们就会得到一些自定义函数。同样,如果我们将 添加到+URL 末尾,例如 so,https://example.com/this+我们就可以显示一些统计数据等。

我将如何通过子域代理这些功能,以便在https://a.example.com/this请求时向用户显示与来自相同的数据,https://example.com/+this但在新的 URL 上,并且当https://b.example.com/this请求时,用户看到与来自相同的结果https://example.com/this+

this使用字符集[a-zA-Z0-9]

我似乎对此一无所获。我知道这mod_rewrite可以提供帮助,这mod_proxy是必需的,可以匹配正则表达式,并且SSLPRoxyEngine on需要设置,最好的方法是什么?

答案1

使用 mod_rewrite / mod_proxy 尝试以下操作:

RewriteEngine On

# Request https://example.com/+this
RewriteCond %{HTTP_HOST} ^(example\.com)$ [NC]
RewriteRule ^/?\+([a-zA-Z0-9]+)$ https://a.%1/$1 [P]

# Request https://example.com/this+
RewriteCond %{HTTP_HOST} ^(example\.com)$ [NC]
RewriteRule ^/?([a-zA-Z0-9]+)\+$ https://b.%1/$1 [P]

假设this仅由字符a-zA-Z和组成0-9(根据注释进行了更新)。或者,您可以在 上使用NCNOCASE- 不区分大小写)标志RewriteRule并指定图案只是[a-z0-9]。或者,如果您也准备允许使用下划线,那么您可以使用\w简写字符类(与 -“单词”字符相同[A-Za-z0-9_])。例如:

RewriteRule ^/?(\w+)\+$ https://b.%1/$1 [P]

更新:重读你的更新问题我觉得我的逻辑颠倒了!(虽然第一个方法有效?)请尝试以下方法:

# https://a.example.com/this TO https://example.com/+this
RewriteCond %{HTTP_HOST} ^a\.(example\.com)$ [NC]
RewriteRule ^/?([a-zA-Z0-9]+)$ https://%1/+$1 [P]

# https://b.example.com/this TO https://example.com/this+
RewriteCond %{HTTP_HOST} ^b\.(example\.com)$ [NC]
RewriteRule ^/?([a-zA-Z0-9]+)$ https://%1/$1+ [P]

.htaccess如果这些指令在RewriteRule 图案可以稍微简化一下.../?前缀可以省略。所以,^/?([a-zA-Z0-9]+)$就变成了^([a-zA-Z0-9]+)$

请注意,这些指令需要放在文件顶部附近.htaccess,在“前端控制器”之前,否则它们将不会被处理。

当代理到 HTTPS(SSL 协议)时,您需要确保SSLProxyEngine On在服务器配置中设置了它。

相关内容