apache 中的 ifmodule 指令有什么替代方法吗?
我正在尝试为我们公司创建一个通用的 nginx.conf 文件,但有些站点对具有 geoip 模块有特殊要求。在这些站点中,我需要在 nginx.conf 中的 http 部分声明一个指令来定义国家/地区数据库。
问题是在其他服务器中,该模块没有被编译,所以我需要注意只有在安装了该模块时才加载它。
任何的想法?提前致谢!
很抱歉让您失望,这是不可能的,今天的 nginx 不可能。通过不同的论坛和邮件列表不止一次说过 nginx 配置不支持宏或条件包含。这就是你所追求的。除了一些最小的东西外,配置在 nginx 中是非常静态的。你不能像在 apache 上那样“编程”它。我会很高兴知道我错了,但是 ATM 我们都求助于黑客。取决于您的环境,但如果您控制服务器,您可以将 geoip 放入一个单独的目录并使用 globbing 来包含。也就是说,不要在没有 geoip 的服务器上放置任何文件,如果模块存在,则在那里放置一个带有 geoip config 的配置文件。如果这不是一个选项,您可能必须修改 init 脚本以进行检查并调整配置。
例子:
假设你有一个目录: /etc/nginx/geoip/
在带有 geoip 模块的服务器上,目录中有一个文件:default.http.scope
文件内容:
geoip_country /usr/share/GeoIP/GeoIP.dat
Run Code Online (Sandbox Code Playgroud)
在没有 geoip 模块的服务器上,目录是空的。
在 http 范围的 nginx 配置中,您可以安全地执行以下操作:
include /etc/nginx/geoip/*.http.scope
Run Code Online (Sandbox Code Playgroud)
在两台服务器上,只有与模式匹配的文件才会尝试配置 geoip。
| 归档时间: |
|
| 查看次数: |
2030 次 |
| 最近记录: |