zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    用代码操作文件(文件夹)
    文件上传
    用ajax、PHP、session做购物车
    ajax返回数据类型为JSON数据的处理
    Hadoop机架感知
    Linux 克隆虚拟机以及克隆之后引起的“Device eth0 does not seem to be present, delaying initialization”问题解决
    克隆之后一键修改IP、删除Mac地址、修改主机名(未测试成功只是思路)
    关于Hadoop的杂乱无章(续更)
    使用CentOS6.8搭建Hadoop集群
    CentOS6.8卸载与安装yum
  • 原文地址:https://www.cnblogs.com/dytl/p/3912130.html
Copyright © 2011-2022 走看看