关于Nginx支持.htaccess的分析

http://www.40099.cc/funny/184.html

 之前曾在Typecho开发群中与王轶讨论了关于Nginx支持.htaccess文件的问题。王轶认为,Nginx能够支持.htaccess规则,且兼容Apache规则。我认为,Nginx支持使用.htaccess文件来存储Nginx的伪静态规则,不兼容.htaccess规则。

  我之所以这么说,是有原因的,我查阅了Nginx的官方文档文档1/文档2,文档1是Nginx的Rewrite模块的doc,详细的解释了nginx的rewrite规则组成,在其中,我没有找到关于Apache的规则,在文档2中,文档说明了为什么不使用.htaccess文件 并将Nginx和Apache进行比较。众所周知,Nginx不支持.htaccess规则,开源中国的站长红薯曾发过一篇文章:谁说nginx不支持.htaccess,在我看来,红薯是在混淆视听,偷换了概念,我们说的是.htaccess规则,而红薯说的是.htaccess文件。

  说了那么多废话。接下来我分析一下nginx为什么不支持.htaccess,主要有以下几个方面。

  1. 性能需要:在文档2中我们可以知道,Apache处理伪静态规则时会依次搜索各个目录下的.htaccess文件,这样就会造成大量的查询,影响性能,与Nginx的设计理念不符。

  2. 软件模式决定:Apache设计时便是动态加载这一点,可以从Apache处理.htaccess文件看出来。你修改了.htaccess后,就可以马上生效,包括Apache加载模块也是动态加载,而Nginx则是写死的规则,修改后需要重载nginx才可以.Tengine虽然提供了动态加载模块,但仍需要重载设置才能生效,可以说是在”伪动态”。

  3. 北方毛熊的自尊心作祟:Apache后面有美帝的身影http://www.40099.cc/life/183.html,毛熊们觉得要是兼容了就有点低声下气。所以搞出自己的版本。

  关于.htaccess应用于Nginx的可行性分析。在我看来,.htaccess不可能应用于LNMP平台的商业化。主要有以下几个原因:

  1. 安全性较低。

  由于Nginx是先加载配置文件,然后才运 行,所以,如果你用的虚拟主机有一个爱折腾的邻居,万一那个家伙手残了,改错了,你也会无法访问,随之遭殃。

  2. 操作不便。

  Nginx因为是先载入配置文件,所以,在每次修改完需要重启Nginx,你是否给用户ssh密码以方便其重启?如果不给密码使用php中的exec,又会有跨站的危险。如果开启了Chroot,exec就没有效果了。

  总结:实际上nginx不仅仅支持.htaccess文件,你甚至可以使用.mp3来放伪静态规则。但是,为了安全起见,我建议你使用默认的conf文件来保存rewrite规则。毕竟,说不定那天手贱就把目录清空了,规则就没了。Nginx也因此崩溃

时间: 2024-10-09 21:24:45

关于Nginx支持.htaccess的分析的相关文章

Linux下nginx支持.htaccess文件实现伪静态的方法

在Google上搜索的资料很多人都说nginx目前不支持.htaccess文件,我按照nginx的规则试验了一下,结果发现nginx是完全支持.htaccess文件的! 方法如下: 1. 在需要使用.htaccess文件的目录下新建一个.htaccess文件,如本人的一个Discuz论坛目录: vim /var/www/html/168pc/bbs/.htaccess 2. 在里面输入规则,我这里输入Discuz的伪静态规则: # nginx rewrite rulerewrite ^(.*)/

Linux下nginx支持.htaccess文件实现伪静态的方法!

在Google上搜索的资料很多人都说nginx目前不支持.htaccess文件,我按照nginx的规则试验了一下,结果发现nginx是完全支持.htaccess文件的! 方法如下: 1. 在需要使用.htaccess文件的目录下新建一个.htaccess文件,如本人的一个Discuz论坛目录: vim /var/www/html/168pc/bbs/.htaccess 2. 在里面输入规则,我这里输入Discuz的伪静态规则: # nginx rewrite rulerewrite ^(.*)/

nginx支持.htaccess文件实现伪静态的方法

方法如下: 1. 在需要使用.htaccess文件的目录下新建一个.htaccess文件, vim /var/www/html/.htaccess 2. 在里面输入规则,我这里输入Discuz的伪静态规则: # nginx rewrite rulerewrite /!.(js|gif|jpg|png|css)$ /index.php;# end nginx rewrite rule wq保存退出. 3. 修改nginx配置文件: vim /etc/nginx/nginx.conf 4. 在需要添

nginx不支持.htaccess解决办法

可能很多朋友都常用nginx不支持.htaccess,只有apache才支持.htaccess文件,其实这是错误的看法nginx也是支持.hatccess的哦,下面我来给各位总结一下配置方法. 其实nginx和.htaccess一点关系都没有,只是一大堆人深受apache的影响觉得nginx应该也要支持.htaccess功能.在nginx的配置中直接include .htaccess文件就好 include /站点目录/.htaccess; 多么简单,但是更让人哭笑不得的是有大部分人根本就不知道

PHP如何让apache支持.htaccess 解决Internal Server Error The server …错误

TP框架  打开 www.newtp.com/index.php/Home/Index/abc出现 如下错误: Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, [email protected] and inform

配置nginx,支持php的pathinfo路径模式

nginx模式默认是不支持pathinfo模式的,类似index.php/index形式的url会被提示找不到页面.下面的通过正则找出实际文件路径和pathinfo部分的方法,让nginx支持pathinfo. server { listen 8080; server_name ewifiportal.com; #charset koi8-r; #access_log logs/host.access.log main; location / { root D:/Users/xc/Zend/wo

如何让apache支持.htaccess 解决Internal Server Error The server …错误

如何让apache支持.htaccess 解决Internal Server Error The server …错误 文章来源:小灰博客| 时间:2013-12-25 12:17:08| 作者:Leo | 2 条评论 文章分类:IT技术分享.PHP.小技巧     标签: .htaccess.apache 今天朋友发来一套叫“PHP爱家房产网源码v5.01_destoon内核%4017558.net”的程序,让修改点东西,我在本地环境打开测试,导入数据库后打开发现报错,应该是服务器内部错误,提

nginx有关.htaccess小结

可能很多朋友都常用nginx不支持.htaccess,只有apache才支持.htaccess文件,其实这是错误的看法nginx也是支持.hatccess的哦. 其实nginx和.htaccess一点关系都没有,只是一大堆人深受apache的影响觉得nginx应该也要支持.htaccess功能.在nginx的配置中直接include .htaccess文件就好 include /站点目录/.htaccess; 多么简单,但是更让人哭笑不得的是有大部分人根本就不知道nginx与apache是两个不

nginx 支持mongodb的编译安装和配置

nginx支持mongodb需要添加模块进行编译安装,步骤如下: 安装pcre-devel sudo apt-get install libpcre3 libpcre3-devsudo apt-get install openssl libssl-dev 安装nginx-gridfsgit clone git://github.com/mdirolf/nginx-gridfs.gitcd nginx-gridfs/git submodule init git submodule update c