求关于 nginx 配置 if 判断载入自定义配置的方法

2016-06-18 01:03:15 +08:00
 Joming
想实现 nginx 自动判断网站根目录下是否存在.htaccess 文件,如果根目录存在.htaccess 则 include 该规则,如果不存在该文件就忽略。

if (-f \.htaccess) {
include \.htaccess;
}

上面肯定不对,求V友指教!
3378 次点击
所在节点    NGINX
6 条回复
msg7086
2016-06-18 05:18:07 +08:00
nginx 不认 htaccess 规则。
if 不能随便用。
而且 nginx 不能自动重载配置吧?
notgod
2016-06-18 05:53:21 +08:00
你这是从头错到脚了

你要明白的问题在于
Nginx 的 rewrite 的规则属于配置文件 更新以后必须 reload nginx, 配置文件才会生效
你这个 if 的前提条件就死了 因为不 reload 根本无效
我们就算你设置监控脚本 监控如果有 nginx rewrite 的配置文件被上传 就 reload 一次
那么你如何保证这个 rewrite rules 是写法正确的勒? 如果错了 nginx ==== down
根本启动不了

就算在监控 使用 nginx -t 如果 pass 才 reload

但是你这问题都问出来了 自己写 就不太现实了
而且这个脚本写了 不难 难在维护和保证稳定性 并且保证其逻辑一直要正确.......
orzfly
2016-06-18 06:14:34 +08:00
fcicq
2016-06-18 10:43:20 +08:00
@orzfly 不要指望活在 apache 托管 php 时代的人去学 openresty.
yeyeye
2016-06-18 22:27:18 +08:00
@notgod 另外放一个 nginx 专门用于测试规则是不是有效的 哈哈哈
Joming
2016-06-27 22:42:15 +08:00
@notgod
@fcicq
感谢!我目前在使用 Directadmin ,里头有默认的 nginx 规则,因为每次使用 directadmin 编辑一次会重新 reload 一次,并且更新 nginx 的配置,现在想实现目录下没有.htaccess 文件就忽略,有就按照.htaccess 执行 rewrite 。现在直接 include .htaccess 能够正常执行 rewrite ,但删除.htaccess 就会报 403 的错误。所以就来讨教了。
@orzfly 正在努力学习中,感谢!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/286605

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX