mysql 用户不能使用低于 1024 的端口,因为这些端口是为 root 用户保留的。
另一方面,Apache 可以使用端口 80。Apache 在作为 Apache 运行之前以 root 身份运行,因此它可以使用端口 80。它甚至可以侦听端口 81 和任何其他端口。
但是,当我尝试让 Apache 监听 79 端口时,它不起作用。我也尝试在端口 1 上监听,但也不起作用。
当我更改 Apache 设置时,Apache 重新启动得很好,但它实际上无法在网络上运行。
我可以在网络上使用端口 1 吗?
答案1
我将使用 Firefox 作为示例,因为它是开源的并且很容易找到其信息,但这也适用于其他浏览器(可能端口列表略有不同)。
2001 年 8 月,CERT 发布了漏洞说明关于如何使用 Web 浏览器将近乎任意的数据发送到攻击者在任意 IP 地址上选择的 TCP 端口。例如,这可用于发送看似来自运行网络浏览器的用户的电子邮件。为了缓解这种情况,Mozilla(以及许多其他供应商)阻止 Firefox 访问某些端口。
您尝试的两个端口(79 和 1)恰好位于阻止列表中。源码包含被阻止端口的完整列表。您可以(在你的浏览器)使用首选项覆盖此列表network.security.ports.banned.override
和network.security.ports.banned
。一般来说,这在互联网上没有用,因为你必须说服每个人谁可能访问您的网站about:config
并进行更改。
(注意:当前版本的 Firefox 将给出一条错误消息,说明如果您尝试浏览到被阻止端口上的站点。)
一般来说,没有什么理由使用额外的 HTTP 端口,至少在外部是这样。如果必须,请优先选择传统的额外端口,例如 8080、8000 等,这些端口不太可能被阻止,或者至少位于 IANA 分配的系统端口范围 (0-1023) 之外。请参阅IANA 端口注册表更多细节。
答案2
apache 重新启动得很好,但在网络上它不起作用。
端口 80 是浏览器和服务器的默认 HTTP 端口。这意味着为了从浏览器访问在非标准端口上运行的服务器,您需要在地址中包含该端口,例如:
http://localhost:79/rest/of/url
如果没有:79
主机名后面的内容,浏览器将尝试访问端口 80,但什么也得不到,因为 apache 正在使用其他端口。
答案3
您可以在任何端口上运行任何服务(模特权)。 HTTP 在端口 80 上是纯粹的约定,没有技术原因这样做。所以是的,您可以在端口 1 上运行 HTTP(除非它被另一个程序使用)。如果它对您不起作用,那么您仍然需要修复服务器配置(检查说明内容netstat -ntl
),或者,如金发姑娘指出,您根本不知道对于 80 以外的任何端口上的 HTTP,您还需要告诉浏览器端口号。