【问题标题】:Why Did I Need to Drop "Listen 80" From My Config Files With My Upgrade to High Sierra?为什么我需要在升级到 High Sierra 时从我的配置文件中删除“Listen 80”?
【发布时间】:2017-10-05 00:38:05
【问题描述】:

升级到 High Sierra 后,我的本地网站访问失败,就像每次升级后一样。这一次我认为我是最重要的,因为我将所有更改都放入了 /other/overides.conf。它仍然没有工作。我终于能够通过删除 Listen 80 来修复它。此新代码随最新的 httpd.conf 一起提供

<IfDefine SERVER_APP_HAS_DEFAULT_PORTS>
    Listen 8080
</IfDefine>
<IfDefine !SERVER_APP_HAS_DEFAULT_PORTS>
    Listen 80
</IfDefine>

显然,更改与更新版本的 Apache 有关。更改的原因是什么?我是否正确修复了它?

【问题讨论】:

  • Google 对SERVER_APP_HAS_DEFAULT_PORTS 的搜索结果少于 10 个,所有配置文件示例,没有文档。有没有人弄清楚应该如何使用这个常量?

标签: apache macos-high-sierra


【解决方案1】:

在以前的 macOS 版本中,您提到的部分是单个 Listen 80 行,位于 /etc/apache2/httpd.conf 开头的相同位置。纯粹是为了在升级 macOS 时便于设置,这是放置您自己的 Listen 指令的正确位置。例如,每次升级时,我都会将该行替换为

  Listen 80
  Listen 81
  Listen 82

然后恢复我现有的httpd-vhosts.conf 文件,我尽可能多地保留我的自定义配置。

(您暗示您在很多地方都有 Listen 指令,我不确定为什么会这样。将它们全部放在一个地方更常见,当然更容易,尤其是当您重新处理 Apple 的“土拨鼠日”配置文件方法)

我在新表单上找不到任何文档,并且在 High Sierra 配置文件或 Apache 的 launchd 调用中的其他任何地方都没有提到它。但它的作用非常清楚:它根据是否设置了某个参数来选择两个备用Listen 配置之一。唯一可以想到的原因是允许 Apple 在两种不同的设置之间切换,而无需修改 http.conf 文件。我猜它与某处的复选框有关,可能在服务器应用程序中(我没有安装),或者它可能预期未来的一些选项。

无论如何,我的理由是:过去我修改了 Apache 所做的而不是监听 80 端口,所以这是我现在应该修改的部分。因此,我将新的 High Sierra httpd.conf 更改为:

<IfDefine SERVER_APP_HAS_DEFAULT_PORTS>
    Listen 8080
</IfDefine>
<IfDefine !SERVER_APP_HAS_DEFAULT_PORTS>
    Listen 80
    Listen 81
    Listen 82
</IfDefine>

这似乎工作正常。据推测,如果神秘的SERVER_APP_HAS_DEFAULT_PORTS 参数在我的计算机上变为真,那么它的全部意义就很明显了。

【讨论】:

  • 我的配置文件已有多年历史。我从一个旧的示例文件中选择了虚拟主机中的 listen 80。鉴于我删除了所有的监听 80,它必须在 8080 上监听。
猜你喜欢
  • 1970-01-01
  • 2021-07-18
  • 2018-07-23
  • 1970-01-01
  • 1970-01-01
  • 2021-07-05
  • 2021-11-20
  • 2017-08-18
  • 1970-01-01
相关资源
最近更新 更多