我希望 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
as监听新端口,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
。
现在,当我尝试访问任何网站,甚至是端口 802 上的服务器 IP 地址时,都会出现This site can’t be reached
错误。但是,可以在端口 44302 上正常访问站点/服务器 ip。
http://ipaddress:802
或http://example.com:802
---- 不工作https://ipaddress:44302
或https://example.com:44302
---- 工作正常
我做错了什么,我该如何解决?
端口 44302 工作但端口 802 没有的原因是因为端口 44302 在防火墙中打开的端口范围内,而 802 不在。
端口 0 - 1023 被视为特权端口,与其他端口不同,仅限于 root 用户。
将端口从 802 切换到通用端口 80 替代方案(如 8080)解决了该问题。