【问题标题】:Apache: "Virtualhost not allowed here" error when using If conditionApache:使用 If 条件时出现“此处不允许虚拟主机”错误
【发布时间】:2020-03-06 23:02:39
【问题描述】:

httpd.conf 内部有一个条件,如下所示:

<If "-f '/some/path/to/existing/file'">
   <VirtualHost _default:$port1>
     ServerName example.com

     ...config1...
   </VirtualHost>
</If>
</Else>
   <VirtualHost _default:$port1>
     ServerName example.com

     ...config2...
   </VirtualHost
</Else>

但是,它给了我一个语法错误 AH00526,上面写着“此处不允许虚拟主机”。如果我注释掉“If Else”条件,并将 VirtualHost 放在块外,它就可以工作。

如何在保持状态的同时解决这个问题?

【问题讨论】:

  • 我认为在 If 语句中不允许使用虚拟主机。
  • 只是出于兴趣,您想达到什么目的?具有相同配置的多个服务器,但它会根据存在的文件而变化?
  • 是的,我有一些使用 OIDC (github.com/zmartzone/mod_auth_openidc) 进行身份验证的 Rails 应用程序,还有一些通过另一种方法进行身份验证的应用程序。一次只运行一个应用程序,但所有应用程序共享相同的 apache conf。所有应用程序都使用相同的服务器名称和端口。 SSLEngine 开启。

标签: apache httpd.conf


【解决方案1】:

您可以尝试以下方法。不要使用If 指令(实际上是用于检查请求参数,您可以尝试使用IfFile 指令。

IfFile 在启动时检查文件是否存在。它没有其他选项,因此您需要确保您的文件检查对每个服务器都是独占的。

【讨论】:

  • 这需要 apache 版本 2.4.34 及更高版本。我需要一些时间来升级并尝试一下。
  • @konyak 另外,当您接受答案时,您还可以奖励他们。
  • 我刚刚做了,谢谢。第一次尝试奖励时浏览器出现问题。
猜你喜欢
  • 2011-05-14
  • 2014-02-06
  • 1970-01-01
  • 2020-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多