即使未使用端口 443,Apache 也无法为 SSL 绑定 :443 地址
Apache cannot bind :443 address for SSL even though port 443 is unused
我最近使用 openssl 1.0.2j 安装了启用 SSL 的 Apache 2.4.20。
更新 httpd.conf 和 httpd-ssl.conf 文件并尝试在侦听端口 443 时启动 Apache 后,出现以下错误:
(13)Permission denied: -----: make_sock: could not bind to address [::]:443
(13)Permission denied: -----: make_sock: could not bind to address 0.0.0.0:443
no listening sockets available, shutting down
这是我的配置:
httpd.conf:
Listen 51000
#Listen 443
#Secure (SSL/TLS) connections
Include conf/extra/httpd-ssl.conf
httpd-ssl.conf
Listen 443
如果我在 httpd-ssl.conf 文件中注释掉这一行,我的 apache 可以正常启动:
attempting to start apache
done
然而,我每次都收到套接字错误。
我运行以下为root:
netstat -tlpn | grep :443
没有返回任何内容。
lsof -i tcp:443
没有返回任何内容。
我在某处读到只有 root 可以绑定到 1024 以下的地址,但我不知道该声明的有效性。 Apache 在这里 运行 不是 root - 这会是问题吗?
问题是 443 是一个特权端口,而您正在尝试以非 root 用户身份进行侦听。
参见:privileged ports and why are privileged ports restricted to root。
There are also ways to get non-root users to bind to privileged ports。
如果您使用 docker 和 docker-compose,
当我们使用像 bitnami 官方镜像这样的非根容器时会发生这种情况。
我们使用 user:root 和 network_mode: host 当它需要与 绑定时主机网络.
apache:
image: bitnami/apache:2.4
container_name: "apache"
ports:
- 80:80
network_mode: host
privileged: true
user: root
environment:
DOCKER_HOST: "unix:///var/run/docker.sock"
env_file:
- .env
volumes:
- ./setup/apache/httpd.conf:/opt/bitnami/apache/conf/httpd.conf
希望对您有所帮助!
我最近使用 openssl 1.0.2j 安装了启用 SSL 的 Apache 2.4.20。
更新 httpd.conf 和 httpd-ssl.conf 文件并尝试在侦听端口 443 时启动 Apache 后,出现以下错误:
(13)Permission denied: -----: make_sock: could not bind to address [::]:443
(13)Permission denied: -----: make_sock: could not bind to address 0.0.0.0:443
no listening sockets available, shutting down
这是我的配置:
httpd.conf:
Listen 51000
#Listen 443
#Secure (SSL/TLS) connections
Include conf/extra/httpd-ssl.conf
httpd-ssl.conf
Listen 443
如果我在 httpd-ssl.conf 文件中注释掉这一行,我的 apache 可以正常启动:
attempting to start apache
done
然而,我每次都收到套接字错误。
我运行以下为root:
netstat -tlpn | grep :443
没有返回任何内容。
lsof -i tcp:443
没有返回任何内容。
我在某处读到只有 root 可以绑定到 1024 以下的地址,但我不知道该声明的有效性。 Apache 在这里 运行 不是 root - 这会是问题吗?
问题是 443 是一个特权端口,而您正在尝试以非 root 用户身份进行侦听。
参见:privileged ports and why are privileged ports restricted to root。
There are also ways to get non-root users to bind to privileged ports。
如果您使用 docker 和 docker-compose,
当我们使用像 bitnami 官方镜像这样的非根容器时会发生这种情况。
我们使用 user:root 和 network_mode: host 当它需要与 绑定时主机网络.
apache:
image: bitnami/apache:2.4
container_name: "apache"
ports:
- 80:80
network_mode: host
privileged: true
user: root
environment:
DOCKER_HOST: "unix:///var/run/docker.sock"
env_file:
- .env
volumes:
- ./setup/apache/httpd.conf:/opt/bitnami/apache/conf/httpd.conf
希望对您有所帮助!