我希望 Apache(v2.4.41)在我的 Ubuntu(v20.04)服务器上监听端口 802 和 44302 而不是 80 和 443,因此我执行以下操作:
编辑了 中的端口号
/etc/apache2/ports.conf
。现在文件只有两行,如下所示:Listen 802 Listen 44302
/etc/apache2/sites-available/000-default.conf
像这样编辑端口号:<VirtualHost *:802> .... </VirtualHost>
/etc/apache2/sites-available/default-ssl.conf
像这样编辑端口号:<IfModule mod_ssl.c> <VirtualHost *:44302> .... </VirtualHost> </IfModule>
/etc/apache2/sites-available
也编辑了里面其他虚拟主机的端口号。重新启动 Apache
netstat
确认 Apache 正在使用以及监听新端口,lsof
并得到以下信息:
网络状态:
tcp6 0 0 :::44302 :::* LISTEN 113959/apache2
tcp6 0 0 :::802 :::* LISTEN 113959/apache2
lsof -i:802
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
apache2 113959 root 4u IPv6 3543809823 0t0 TCP *:802 (LISTEN)
apache2 113960 www-data 4u IPv6 3543809823 0t0 TCP *:802 (LISTEN)
apache2 113961 www-data 4u IPv6 3543809823 0t0 TCP *:802 (LISTEN)
lsof -i:44302
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
apache2 117939 root 6u IPv6 3547650042 0t0 TCP *:44302 (LISTEN)
apache2 117940 www-data 6u IPv6 3547650042 0t0 TCP *:44302 (LISTEN)
apache2 117941 www-data 6u IPv6 3547650042 0t0 TCP *:44302 (LISTEN)
- 通过使用
netstat
和,确认没有其他任何东西正在监听端口 80 和 443lsof
。
现在,当我尝试访问任何网站甚至服务器 IP 地址(:802 或:44302)时,只会收到错误This site can’t be reached
。
我做错了什么以及我该如何解决这个问题?
更新:
我重新启动了服务器,而不是仅仅重新启动 apache,https://example.com:44302
现在可以正常工作,但http://example.com:802
仍然返回This site can’t be reached
错误。
除服务器重启外,上述配置没有做出任何更改。
答案1
端口 44302 可以运行而端口 802 不运行的原因是,端口 44302 在防火墙的开放端口范围内,而端口 802 不在。
端口 0 - 1023 被视为特权端口,与其他端口不同,仅限于 root 用户使用。
将端口从 802 切换到通用端口 80 替代端口(例如 8080)即可解决问题。