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小结的更多相关文章
- nginx支持.htaccess文件实现伪静态的方法
方法如下: 1. 在需要使用.htaccess文件的目录下新建一个.htaccess文件, vim /var/www/html/.htaccess 2. 在里面输入规则,我这里输入Discuz的伪静态 ...
- 让nginx支持.htaccess文件实现伪静态的方法!
搞了个VPS,装了个LNMP一键安装包,然后搞了个程序放上,想实现伪静态,但是lnmp的默认规则里没有河蟹男需要的伪静态文件,得自己配置, 以前只在.htaccess里搞下就行,现在换Linux下ng ...
- Linux下nginx支持.htaccess文件实现伪静态的方法!
在Google上搜索的资料很多人都说nginx目前不支持.htaccess文件,我按照nginx的规则试验了一下,结果发现nginx是完全支持.htaccess文件的! 方法如下: 1. 在需要使用. ...
- nginx基础知识小结
配置文件讲解: #user nobody; #开启进程数 <= CPU数 worker_processes 1; #错误日志保存位置 #error_log logs/error.log; #er ...
- nginx配置.htaccess伪静态
https://blog.csdn.net/moqiang02/article/details/37695775
- linux Nginx VirtualHost虚拟主机多站点设置
linux系统CentOS7 Nginx1.9.9 一台nginx服务器同一IP被注册多个不同域名,访问不同域名到该服务器后请求不同项目 本台nginx服务器的IP地址为 192.168.155.12 ...
- 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配置信息损毁又无备份时如何恢复
worker_processes *; 本文介绍在Nginx配置信息出现问题后,在没有备份的情况下,如何利用Nginx进程的虚拟内存恢复配置信息. 问题背景 假设 /etc/nginx/site-av ...
- nginx 反向代理服务
目录 Nginx代理服务基本概述 Nginx代理服务常见模式 Nginx代理服务支持协议 Nginx反向代理配置语法 Nginx反向代理场景实践 配置代理实战 在lb01上安装nginx Nginx代 ...
随机推荐
- 在VS 2012 配置SDL
一.链接:http://pan.baidu.com/s/1kVaWteR 密码:zt81 下载两个文件夹.(如果不行就到 SDL官网 https://www.libsdl.org/ 和 SDL2_im ...
- Guava学习笔记:Range
在Guava中新增了一个新的类型Range,从名字就可以了解到,这个是和区间有关的数据结构.从Google官方文档可以得到定义:Range定义了连续跨度的范围边界,这个连续跨度是一个可以比较的类型(C ...
- [转载]协程-cooperative multitasking
[转载]协程三讲 http://ravenw.com/blog/2011/08/24/coroutine-part-1-defination-and-classification-of-corouti ...
- Vanilla Masker – 功能强大的输入过滤插件
Vanilla Masker 是一个纯 JavaScript 实现的输入内容过滤和自动转换插件.现在你可以使用一个简单而纯粹的 JavaScript 库来控制你的 input 元素,而不需要加载 jQ ...
- Web 开发人员必备的12款 Chrome 扩展程序
之前已经分享过一些帮助 Web 开发人员和设计师的 Chrome 扩展,这次我们继续展示一组很有用的 Chrome 应用程序.这些免费的 Chrome 应用程序可以简化您的工作流程,为了加快您的工作流 ...
- 【javascript激增的思考02】模块化与MVC
前言 之前我们遇到了这么一个项目,也就是我们昨天提到的,有很多的小窗口的,昨天说的太抽象了,今天我们再来理一理什么是小窗口(后面点说下),当时由于js有一点复杂,我自己也装B跟风用了一下传说中MVC! ...
- 如何收缩超大的SharePoint_Config数据库
前言 在已经运行了2年多的SharePoint服务器上,发现SharePoint_Config的数据库文件越来越大,已经达到90几个GB,收缩可以减小20几个GB,但是一周以后又会恢复到90几个GB大 ...
- sharepoint app 开发环境配置
1. 配置脚本如下: .通过打开命令提示符并键入以下命令来确保 spadmin 和 sptimer 服务正在运行. net start spadminv4 net start sptimerv4 .作 ...
- c#程序打包大全
c#程序打包现在分为两种,一种是VS自带的打包方式,还有一种是第三方的打包方式,在VS2013里面是没有自带打包安装部署的,只有第三方的创建. 第三方打包方式很简单,百度Installshield下载 ...
- mvc上传到云虚拟机的问题解决
我用vs2015写了个小网站,.Net Framework4.5. mvc 5,发布到本机iis上正常,在美橙申请了一个云虚拟机,发布过程中遇到的一些问题记录如下: 1.服务器支持的版本比较低 上传后 ...