我的httpd.conf
显示它正在监听端口 80。我想我应该将 IP 更改为我的机器的 IP,但我不确定并且明智地犹豫了。
#Listen 12.34.56.78:80
Listen 80
但是我的虚拟主机显示端口 443,我该如何更改?这是我的问题根源吗?
更新
'虚拟主机默认:443' = /etc/httpd/conf.d/ssl.conf
这告诉我虚拟主机是正确的。我觉得我可以从这个场景中排除所有与 443 相关的信息来得到答案。
/etc/httpd/conf.d/ssl.conf:<VirtualHost _default_:443>
/etc/httpd/conf.d/ssl.conf:#ServerName www.example.com:443
/etc/httpd/conf.d/ssl.conf.rpmnew:Listen 443 https
/etc/httpd/conf.d/ssl.conf.rpmnew:<VirtualHost _default_:443>
/etc/httpd/conf.d/ssl.conf.rpmnew:#ServerName www.example.com:443
即
Job for httpd.service failed because the control process exited with error code.
See "systemctl status httpd.service" and "journalctl -xe" for details.
我正在努力学习类似的主题。我用的是 Fedora,因此理解起来有点不同。
systemctl status httpd.service
说:
httpd[1182]: AH00526: Syntax error on line 18 of /etc/httpd/conf.d/ssl.conf:
第 18 行说 | 收听 80
httpd[1182]: Cannot define multiple Listeners on the same IP:port
systemd[1]: httpd.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: httpd.service: Failed with result 'exit-code'.
systemd[1]: Failed to start The Apache HTTP Server.
/etc/httpd/conf.d.ssl.conf 第 18 行 |Listen 80
这是我感到困惑的地方,因为grep '443' /etc/httpd/conf.d/*
我的文件显示ssl.conf
为 443,但当我读取httpd.conf
文件时,我看到这12.34.56.78:80
是一个预防性 IP。因此,我应该在此处添加我的机器 IP 并监听 80 和 443。
答案1
该错误似乎表明您Listen
的 Apache 配置文件中可能有多个指令指定相同的 IP/端口 80 组合。
Listen
(一般规则)应该只在httpd.conf
(例如Listen 80
) 中出现一次,并且在默认 SSL 配置中 (例如Listen 443
) 应该只出现一次。
虽然可以Listen
在同一个端口(例如 80)上有多个指令,但它们都必须具有不同的 IP:端口组合。
Listen
因此我应该在这里以及80 和 443 上添加我的机器的 IP 。
阿帕奇听指令可以采用两种通用形式:“每个 IP”和“全局”(所有可用的 IP):
# Per IP
# Listen 12.34.56.78:80
# Global (i.e includes ex. 12.34.56.78)
Listen 80
上面的配置有效。通常,类似下面的配置也能正常工作(假设您的系统有多个 IP):
# Per IP
Listen 12.34.56.78:80
Listen 23.56.78.90:80
# Global (i.e includes ex. 12.34.56.78)
# Listen 80
这很可能不起作用(即 Apache 将无法启动):
# Per IP
Listen 12.34.56.78:80
# Global (i.e includes ex. 12.34.56.78)
Listen 80