如何设置 Apache 使用端口 1 和其他低于 80 的端口?

如何设置 Apache 使用端口 1 和其他低于 80 的端口?

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.overridenetwork.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,您还需要告诉浏览器端口号。

相关内容