出于安全原因,我将网站的某些部分限制为仅允许本地主机访问。为了访问它们,我会创建一个像这样的 ssh 隧道 ssh -L 8080:localhost:80 username@server.com 并将我的电脑上的本地浏览器设置为代理 127.0.0.1:8080
好吧,我想我错过了一些东西,因为本地浏览器中没有加载任何内容,并且在服务器端的终端中它显示通道 3:打开失败:连接失败:每次我尝试在本地电脑上加载某些内容时,连接被拒绝
尝试此操作时防火墙已关闭
正如已经讨论过的,ssh -L 8080:localhost:80 username@server.com
不会在客户端启动神奇代理服务器,它只是将客户端端口 8080 转发到服务器端口 80。您需要让客户端 Web 浏览器连接到客户端端口 8080,正如其他人和我自己一样所述涉及将您的客户端网络浏览器指向http://localhost:8080/
。
您的新问题是服务器正在运行许多基于名称的虚拟主机,并且当您不在 URL 中向服务器请求时,您将无法获得正确的主机,这是足够合理的。
最简单的解决方法是告诉您的客户端按名称访问站点,但让操作系统向浏览器谎报主机解析的 IP 地址。假设您想要通过我们已经设置的 SSH 隧道访问主机vsite1.example.com
和vsite2.example.org
,它们都在服务器上的端口 80 上提供服务。
编辑您的客户端 /etc/hosts
文件,告诉您的操作系统这些主机名解析为127.0.0.1
,其中包含诸如
127.0.0.1 localhost localhost.localdomain vsite1.example.com vsite2.example.org
Run Code Online (Sandbox Code Playgroud)
我相信 Windows 上有相应的 hack,但我不知道它们是什么,因为我从未使用过它。
现在您可以将客户端浏览器指向http://vsite1.example.com:8080/
,客户端操作系统将告诉浏览器位于 localhost 上,URL 会将浏览器指向 localhost 端口 8080,ssh 会将数据包sub rosa传输到服务器端口 80,客户端浏览器将询问服务器的 web正确虚拟主机的服务器。
归档时间: |
|
查看次数: |
15209 次 |
最近记录: |