我最近安装了使用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身份运行的 - 这会是问题吗?
答案 0 :(得分:1)
问题是443是特权端口,并且您尝试以非root用户身份进行侦听。
请参阅:privileged ports和why are privileged ports restricted to root。
There are also ways to get non-root users to bind to privileged ports。
答案 1 :(得分:0)
如果您将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
希望有帮助!