![如何在 VPN 后面设置测试环境?](https://linux22.com/image/575212/%E5%A6%82%E4%BD%95%E5%9C%A8%20VPN%20%E5%90%8E%E9%9D%A2%E8%AE%BE%E7%BD%AE%E6%B5%8B%E8%AF%95%E7%8E%AF%E5%A2%83%EF%BC%9F.png)
我有一个 Linode VPS,用于托管多个网站。我运行的是 Ubuntu 10.04 和 Apache 2。我希望将我的实时网站 (example-site.com) 和测试网站 (test.example-site.com) 放在同一个机器上,但只有通过 VPN 连接到我的 VPS 时才能访问 test.example-site.com。
我已经设置了 OpenVPN,如下所示Linode 的说明并且能够连接,但我不确定如何设置 Apache 以启用此功能。如何设置 Apache 以在连接到 VPN 时仅允许访问测试站点,但允许任何人访问实时站点?
答案1
让 Apache 中的虚拟主机定义监听不同的接口。
假设 OpenVPN 接口是 10.8.0.101。在这种情况下,在 test.example.com 虚拟主机定义中,设置VirtualHost 10.8.0.101:80
。同样,对于 www.example.com,将其设置为在主接口上监听,例如VirtualHost 192.168.1.1:80
或 eth0 接口的 IP。
答案2
我假设您在这里运行的是 Linux/BSD,但我相信您可以使用 Windows 上的 ssh 做同样的事情。
另一种方法是使用 ssh (我使用的是授权密钥而不是密码)
VARS 替换为您的选项
$PORT = The port you wish to set this up on
$YOURSITE = The directory your test site resides in
$YOURTESTURL = The url of your test site
$USER = the user you have setup to ssh into your server with
$YOURSERVER = the ip or url of your server
服务器上的 apache 配置
<VirtualHost 127.0.0.1:$PORT>
DocumentRoot /var/www/$YOURSITE/
ServerName $YOURTESTURL
</VirtualHost>
现在在你的终端输入
ssh -L $PORT:127.0.0.1:$PORT $USER@$YOURSERVER
现在打开你的网络浏览器到 $YOURTESTURL:$PORT
我使用它来连接到我服务器上的管理站点而不必将它们暴露给互联网:)
希望这可以帮助