Apache虚拟主机配置:实现仅本地访问并通过SSH隧道访问的需求
Apache虚拟主机配置:实现仅本地访问并通过SSH隧道访问的需求
我来帮你搞定这个需求!咱们一步步调整配置,既能让subd.site2.com仅在Apache服务器本机可访问,又能通过SSH隧道从你的远程终端正常访问内容。
1. 修改虚拟主机配置,限制仅本地访问
打开你的subd.site2.com.conf文件,把原来的虚拟主机绑定范围从所有地址改成仅服务器本地回环地址,同时添加访问控制规则,确保只有本地请求能进入这个虚拟主机:
<VirtualHost 127.0.0.1:80> ServerName subd.site2.com ServerAdmin webmaster@localhost DocumentRoot /var/www/site2/public_html # 明确允许仅本地IP访问 <RequireAll> Require ip 127.0.0.1 Require ip ::1 </RequireAll> </VirtualHost>
2. 完善Alias对应的目录权限配置
你的mysite_apache.conf已经配置了Alias,但需要补充目录权限规则,避免Apache返回403禁止访问错误:
Alias /site2 /var/www/site2/public_html <Directory /var/www/site2/public_html> # 允许本地回环地址访问(SSH隧道转发的请求会被识别为本地) Require ip 127.0.0.1 Require ip ::1 # 可选:允许目录索引、跟随符号链接,根据你的需求调整 Options Indexes FollowSymLinks AllowOverride None </Directory>
3. 重启Apache让配置生效
保存所有修改的配置文件后,执行以下命令重启Apache服务:
sudo systemctl restart apache2
4. 验证SSH隧道访问
你之前的隧道命令是正确的,执行这条命令建立本地8888端口到服务器80端口的转发:
sudo ssh -i .ssh/key.pem admin@1.2.3.4 -L 8888:127.0.0.1:80
隧道建立后,在你本地的浏览器或终端访问http://127.0.0.1:8888/site2,请求会通过SSH隧道转发到服务器的本地回环地址,匹配到我们配置的规则,就能正常访问内容了。而外部直接访问http://subd.site2.com会因为虚拟主机仅绑定到服务器本地,无法被外部请求触发,完美实现你的临时配置需求。
备注:内容来源于stack exchange,提问作者PhönixGeist
相关产品推荐
相关产品推荐

