如何在不改变用户浏览器 URL 的情况下重定向 URL

如何在不改变用户浏览器 URL 的情况下重定向 URL

我想使用 Apache 中的 VirtualHost 配置使用 mod_rewrite 重定向 URL,而不更改用户浏览器 URL。

即如果有人访问,grafana.test.lan:80他们应该重定向到http://grafana.test.lan:3000无需用户知情或 URL 更改。

这是我的配置文件:

LoadModule rewrite_module "/etc/httpd/modules/mod_rewrite.so"

<VirtualHost *:80>
 ServerName grafana.test.lan
 RewriteEngine on
 RewriteRule ^(.*) http://grafana.test.lan:3000/$1
</VirtualHost>

知道我该怎么做吗?我正在 Centos 7 上配置它。

答案1

有两种方法可以做到:

1. 使用 mod_proxy

要启用代理模式,您必须在 bash 中发送以下命令:

a2enmod proxy
ad2enmod proxy_http

然后像这样更改你的网络配置

<VirtualHost *:80>
ServerName grafana.test.lan
ProxyPass / http://grafana.test.lan:3000/
ProxyPassReverse /  http://grafana.test.lan:3000/
</VirtualHost>

官方链接:mod_proxymod_proxy_http

2. 使用 mod_rewrite

通过像这样更改你的网络配置

<VirtualHost *:80>
ServerName grafana.test.lan
RewriteEngine on
RewriteRule (.*) http://grafana.test.lan:3000/$1 [P]
</VirtualHost>

官方链接:mod_rewrite

答案2

您无法通过重写来实现这一点。您需要在站点用户和在端口 3000 上提供服务的服务器之间使用反向代理。详细信息留给作者作为练习。

相关内容