您的位置:首页 > 运维架构 > Nginx

nginx 配置资料 整理(一)

2012-06-19 17:19 141 查看

Nginx Gzip 压缩配置

随着nginx的发展,越来越多的网站使用nginx,因此nginx的优化变得越来越重要,今天我们来看看nginx的gzip压缩到底是怎么压缩的呢?

gzip(GNU-ZIP)是一种压缩技术。经过gzip压缩后页面大小可以变为原来的30%甚至更小,这样,用户浏览页面的时候速度会块得多。gzip 的压缩页面需要浏览器和服务器双方都支持,实际上就是服务器端压缩,传到浏览器后浏览器解压并解析。浏览器那里不需要我们担心,因为目前的巨大多数浏览器 都支持解析gzip过的页面。
Nginx的压缩输出有一组gzip压缩指令来实现。相关指令位于http{….}两个大括号之间。
gzip on;
//该指令用于开启或关闭gzip模块(on/off)
gzip_min_length 1k;
//设置允许压缩的页面最小字节数,页面字节数从header头得content-length中进行获取。默认值是0,不管页面多大都压缩。建议设置成大于1k的字节数,小于1k可能会越压越大。
gzip_buffers 4 16k;
//设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。4 16k代表以16k为单位,安装原始数据大小以16k为单位的4倍申请内存。
gzip_http_version 1.1;
//识别http的协议版本(1.0/1.1)
gzip_comp_level 2;
//gzip压缩比,1压缩比最小处理速度最快,9压缩比最大但处理速度最慢(传输快但比较消耗cpu)
gzip_types text/plain application/x-javascript text/css application/xml
//匹配mime类型进行压缩,无论是否指定,”text/html”类型总是会被压缩的。
gzip_vary on;
//和http头有关系,加个vary头,给代理服务器用的,有的浏览器支持压缩,有的不支持,所以避免浪费不支持的也压缩,所以根据客户端的HTTP头来判断,是否需要压缩
nginx 配置gzip段如下:
gzip on;
gzip_min_length 1k;
gzip_buffers 16 64k;
gzip_http_version 1.1;
gzip_comp_level 6;(通过我亲自测试配置成6和9的差别不大,只有0.1%-0。2%差别,1和比较小了,不建议配置,差别大)
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;

nginx域名绑定

nginx可把多个域名规则写一个配置文件里,也可分别建立多个域名配置文件,我一般为了管理方便,每个域名建一个文件。

有些同类域名也可写在一个总的配置文件里。

一、每个域名一个文件的写法

首先打开nginx域名配置文件存放目录:/usr/local/nginx/conf ,如要绑定域名www.vps.com 则在此目录建一个文件:www.vps.com.conf 然后在此文件中写规则,如:

server
{
listen 80;
server_name www.vps.com; #绑定域名
index index.htm index.html index.php; #默认文件
root /home/www/xqs.cn; #网站根目录
include location.conf; #调用其他规则,也可去除
}

然后重起nginx服务器,域名就绑定成功了

nginx服务器重起命令:nginx -s reload && echo ok

二、一个文件多个域名的写法

一个文件添加多个域名的规则也是一样,只要把上面单个域名重复写下来就ok了,如:

server
{
listen 80;
server_name www.vps.comn; #绑定域名
index index.htm index.html index.php; #默认文件
root /home/www/web1.com; #网站根目录
include location.conf; #调用其他规则,也可去除
}

server
{
listen 80;
server_name xxx.vps.com; #绑定域名
index index.htm index.html index.php; #默认文件
root /home/www/xxx.vps.com; #网站根目录
include location.conf; #调用其他规则,也可去除
}

三、不带www的域名加301跳转

如果不带www的域名要加301跳转,那也是和绑定域名一样,先绑定不带www的域名,只是不用写网站目录,而是进行301跳转,如:

server
{
listen 80;
server_name vps.com;
rewrite ^/(.*) http://www.vps.comn/$1 permanent;
}
四、添加404网页
添加404网页,都可又直接在里面添加,如:
server
{
listen 80;
server_name www.vps.comn; #绑定域名
index index.htm index.html index.php; #默认文件
root /home/www/xqs.cn; #网站根目录
include location.conf; #调用其他规则,也可去除
error_page 404 /404.html;
}
nginx优点:
1,占用资源少,效率高; 2,能处理高并发; 3,能实现应用层的负载均衡,
4,具有反向代理的功能,可以用他搭建cdn
下面部分引用来自网络
(Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性:
作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟>主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型.
作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。
作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。
Nginx 安装非常的简单,配置文件 非常简洁(还能够支持perl语法),Bugs非常少的服务器: Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在 不间断服务的情况下进行软件版本的升级。 )
默认主机头问题
nginx的默认虚拟主机在用户通过IP访问,或者通过未设置的域名访问(比如有人把他自己的域名指向了你的ip)的时候生效
最关键的一点事,在server的设置里面添加这一行:
listen 80 default;
后面的default参数表示这个是默认虚拟主机。

这个设置非常有用。
比如别人通过ip或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以给他返回500.
目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。就可以这样设置:
server {
listen 80 default;
return 500;
}

也可以把这些流量收集起来,导入到自己的网站,只要做以下跳转设置就可以:
server {
listen 80 default;
rewrite ^(.*) http://www.sdlinx.com permanent;
}
在http 加上 server_tokens off; 不显示版本号,只显示Nginx;
在某些情况下(具体可参考 wiki.nginx.org),Nginx 内部重定向规则会被启动,例如,当 URL 指向一个目录并且在最后没有包含“/”时,Nginx 内部会自动的做一个 301 重定向,这时会有两种情况:
1、server_name_in_redirect on(默认),URL 重定向为: server_name 中的第一个域名 + 目录名 + /;
2、server_name_in_redirect off,URL 重定向为: 原 URL 中的域名 + 目录名 + /。
用Nginx做Web服务器,如果没有处理好日志,日志文件可能会很恐怖~10G、20G

可以修改nginx.conf 找到access_log:

access_log /dev/null;
error_log /dev/null; (需要放在server里面,才会生效)

这样全部把他们丢到系统的黑洞里了
不用每时每刻都往系统磁盘疯狂的读写日志了 还延长硬盘的寿命
弄完记得重启
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: