nginx有关.htaccess小结

可能很多朋友都常用nginx不支持.htaccess,只有apache才支持.htaccess文件,其实这是错误的看法nginx也是支持.hatccess的哦.

其实nginx和.htaccess一点关系都没有,只是一大堆人深受apache的影响觉得nginx应该也要支持.htaccess功能。在nginx的配置中直接include .htaccess文件就好

include /站点目录/.htaccess;

多么简单,但是更让人哭笑不得的是有大部分人根本就不知道nginx与apache是两个不同webserver程序,于是不少人这么干:在nginx里include .htaccess文件后,把apache伪静态规则的.htaccess上传到站点根目录下...无语。其实nginx可以include任何文件,而不仅仅是.htaccess。

其实nginx这样引用.htaccess跟apache还是有区别的,写法也不同:

1、nginx是启动引入,因为nginx特别注重效率,所以启动的时候会把所有的配置文件读入内存,然后启动个。如果发现有语法错误,则启动失败。而apache则是动态引入,每次访问站点都会重新载入配置。

2、nginx中的include是手动添加,指定目录。apache已经把.htaccess作为它的一种特色机制,并且支持站所有子目录都可以有.htaccess文件。

(以下摘自http://wiki.nginx.org/LikeApache-htaccess)

Like Apache: .htaccess

You can‘t do this. You shouldn‘t. If you need .htaccess, you‘re probably doing it wrong.

Why?

This is a great question. For starters, for .htaccess to work Apache needs to check EVERY directory in the requested path for the existence of a .htaccess file and if it exists it reads EVERY one of them and parses it. This happens for EVERY request. Remember that the second you change that file, it‘s effective. This is because Apache reads it every time.

Numbers

http://example.com/site/files/images/layout/header.png

Let‘s say we‘re not doing any funky aliasing and the file system looks like the path. This covers most of the sites out there. There is the / directory, then site/, files/, images/, and layout/. This amounts to 5 directories that could have a .htaccess file. Let‘s say you added a .htaccess in /, files/ and images/. That‘s three .htaccess files. That‘s pretty typical.

Now the numbers, that‘s 6 file system stats and 4 file system reads. Including one for the requested file. This happens for every read. We‘ll ignore parsing time because both Nginx and Apache need to do this and we‘ll consider the difference in time for this negligible.

Requests [Per Hour] Nginx FS Stats Nginx FS Reads Apache FD Stats Apache FS Reads Comment
1 1 1 6 4 Single Request  [Pretty much no load]
10 10 10 60 40 Ten Requests    [Pretty much no load]
3,600 3,600 3,600 21,600 14,400 1 req/sec           [Very low load]
144,000 144,000 144,000 864,000 576,000 40 req/sec         [Moderate traffic - nothing very large]
324,000 324,000 324,000 1,944,00 1,296,000 90 req/sec         [Higher traffic site - not massive]
576,000 576,000 576,000 3,456,000 2,304,000 160 req/sec       [Pretty high traffic - still not massive though]

More Numbers

The default for Apache is to use AllowOverride All. Let‘s look at this for a Drupal website. One image for the theme. If you‘re website DocRoot is at /var/www/drupal6/ then we just added more file system stats. This adds 3 stats per request. This is an incredibly common Apache/Drupal setup. It‘s the end result of countless guides out there.

/var/www/drupal6/sites/example.com/themes/yourtheme/images/layout/header.png
Two .htaccess files will be in this path unless you create your own.
I‘ll be assuming you added one in /var/www/ because this is common.

Requests [Per Hour] Nginx FS Stats Nginx FS Reads Apache FD Stats Apache FS Reads Comment
144,000 144,000 144,000 1,296,000 576,000 40 req/sec
324,000 324,000 324,000 2,916,000 1,296,000 90 req/sec
576,000 576,000 576,000 51,840,000 2,304,000 160 req/sec

Conclusion

Stop using .htaccess. It‘s horrible for performance. Nginx is
designed to be efficient. Adding something like this would destroy that.

nginx有关.htaccess小结

时间: 2024-10-18 10:40:45

nginx有关.htaccess小结的相关文章

关于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的rewri

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; 多么简单,但是更让人哭笑不得的是有大部分人根本就不知道

Linux下Nginx+PHP 简单安装配置

测试环境 Linux 2.6.18nginx-1.0.4 http://www.nginx.org/php-5.3.6 http://www.php.net/ 一,安装Nginxwget http://nginx.org/download/nginx-1.0.4.tar.gztar -zxvf nginx-1.0.4.tar.gzcd nginx-1.0.4./configure --prefix=/data/apps/nginx-1.0.4make && make install 二,安

Linux平台(Centos7)-lnmp一键式部署mysql,nginx,php,php-fpm服务

Linux平台(Centos7)-lnmp一键式部署mysql,nginx,php,php-fpm服务 1. 部署方式1:手动部署. 6 1.1. 配置防火墙. 6 1.2. 关闭firewall 6 1.3. 安装iptables防火墙. 6 1.4. 安装Apache 7 1.5. 安装MariaDB 9 1.5.1. 安装MariaDB 9 1.5.2. 启动服务. 10 1.5.3. 设置开机启动. 10 1.5.4. 为root账户设置密码. 11 1.5.5. 重启MariaDB 1

nginx 反向代理服务

目录 Nginx代理服务基本概述 Nginx代理服务常见模式 Nginx代理服务支持协议 Nginx反向代理配置语法 Nginx反向代理场景实践 配置代理实战 在lb01上安装nginx Nginx代理服务基本概述 代理: 代理一词往往并不陌生, 该服务我们常常用到如(代理理财.代理租房.代理收货等等),如下图所示 没有代理情景 在没有代理模式的情况下,客户端和Nginx服务端,都是客户端直接请求服务端,服务端直接响应客户端. 企业场景 那么在互联网请求里面,客户端往往无法直接向服务端发起请求,

CI框架源码阅读笔记1 - 环境准备、基本术语和框架流程

最开始使用CI框架的时候,就打算写一个CI源码阅读的笔记系列,可惜虎头蛇尾,一直没有行动.最近项目少,总算是有了一些时间去写一些东西.于是准备将之前的一些笔记和经验记录下来,一方面权作备忘,另一方面时刻提醒自己:借鉴和学习才有出路,忘记过去意味着背叛! 基本术语说明 在本文开始之前,有必要对文中反复出现的术语做一个简单的说明,如果你对这一部分已经熟谙,完全可以略过.本文中反复出现和提及的术语包括: 前端控制器(Front Controller): 用于集中控制用户的所有请求的组件,将用户的请求发