求关于 nginx 配置 if 判断载入自定义配置的方法
- 0次
- 2021-05-25 16:04:13
- idczone
想实现 nginx 自动判断网站根目录下是否存在.htaccess 文件,如果根目录存在.htaccess 则 include 该规则,如果不国外服务器存在该文件就忽略。
if (-f \.htaccess) {
include \.htaccess;
}
上面肯定不对,求V友指教!
nginx 不认 htaccess 规则。
if 不能随便用。
而且 nginx 不能自动重载配置吧?
你这是从头错到脚了
你要明白的问题在于
Nginx 的 rewrite 的规则属于配置文件 更新以后必须 reload nginx, 配置文件才会生效
你这个 if 的前提条件就死了 因为不 reload 根本无效
我们就算你设置监控脚本 监控如果有 nginx rewrite 的配置文件被上传 就 reload 一次
那么你如何保证这个 rewrite rules 是写法正确的勒? 如果错了 nginx ==== down
根本启动不了
就算在监控 使用 nginx -t 如果 pass 才 reload
但是你这问题都问出来了 自己写 就不太现实了
而且这个脚本写了 不难 难在维护和保证稳定性 并且保证其逻辑一直要正确.......
不回答问题,不过推荐楼主读一读这个……
https://openresty.org/download/agentzh-nginx-tutorials-zhcn.html
https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/
不要指望活在 apache 托管 php 时代的人去学 openresty.
另外放一个 nginx 专门用于测试规则是不是有效的 哈哈哈
感谢!我目前在使用 Directadmin ,里头有默认的 nginx 规则,因为每次使用 directadmin 编辑一次会重新 reload 一次,并且更新 nginx 的配置,现在想实现目录下没有.htaccess 文件就忽略,有就按照.htaccess 执行 rewrite 。现在直接 include .htaccess 能够正常执行 rewrite ,但删除.htaccess 就会报 403 的错误。所以就来讨教了。
正在努力学习中,感谢!