我正在运行 Red Hat Enterprise Server 6。它httpd
默认安装并在启动时运行 Apache Server ( )。我的文档文件保存在 中/var/www/html/web
,我可以通过 在我的计算机上访问它们http://localhost/web
。我已将80
和443
端口转发到我的服务器的本地 IP 地址,如本文所述文章但是尽管进行了这种重定向,我仍然无法通过在不在我的 LAN 中的具有互联网连接的其他计算机的浏览器地址栏中输入我的路由器的全局 IP 来通过互联网访问我的 Web 服务器。
我用这网站检查80
端口,结果是:
错误:我无法在端口 (80) 上看到您的服务原因:连接超时
我添加(并转发)Listen 413
了Listen 6666
端口到/etc/httpd/conf/httpd.conf
Apache 配置文件中,以查看我的 ISP 是否阻止了端口80
,但没有成功。
22
虽然我对 SSH 端口做了同样的事情(端口转发) ,但它在全球范围内起作用(现在仍然起作用)。
答案1
当您在边界路由器上进行端口转发时,不需要在 apache 服务器上添加监听指令。
为了测试你的 ISP 是否阻止了端口 80,你需要执行以下操作:
- 在路由器中为其他端口设置端口转发,例如端口 8080(或其他端口)或端口 22(如果已知可用)。转发到 apache 上的端口 80。路由器上的多个端口转发定义可能都指向服务器上的同一端口。您无需更改服务器上的任何监听指令。
您必须了解端口转发的作用。它会转换传入的请求。服务器甚至看不到使用的外部 IP 和端口号。
因此,如果您的外部 IP 是 84.84.84.85 并且您的内部服务器的地址是 10.10.10.10,您可以在路由器上进行以下端口转发:
port 8080 to 10.10.10.10:80
然后在网络之外的某台机器上启动浏览器并输入:
http://84.84.84.85:8080
您的防火墙会将其转发到 10.10.10.10:80。因此,您无需向服务器添加任何“监听 8080”。您可以添加其他端口转发,甚至添加范围(在某些路由器上),以便能够测试更多端口号。
你可以用不同的端口进行测试,直到找到一个有效的端口。没有法律规定 Web 服务器必须在端口 80 上应答。事实上,我曾经将路由器上的 ftp 端口转发到 ssh 服务器,以绕过公司防火墙中的 ssh 阻止...