Nginx概述(一)

1.Nginx简介

常见的web服务器:
Apache Lighttpd Tomcat IBMWebSphere MicrosoftIIS Nginx
Nginx的优点:
高并发连接
内存消耗小
配置文件简单
支持Rewrite重写规则
内置健康检查功能
节省带宽,支持gzip压缩,可以添加浏览器本地缓冲的Header头
稳定性高

支持热部署,就是在不间断服务的情况下,对软件版本进行升级


2.Nginx服务器的安装和配置


3.Nginx的基本配置与优化

nginx.conf的配置文件结构主要由以下几部分构成:


.......
events
{
.......
}


http
{
........
      server
      {
      .........  
      }


      server
      {
      .........  
      }


...............
}


***************************************************************************
Nginx的虚拟主机配置
以下是一个最简化的虚拟主机配置代码:
http{
server{
listen 80 default;
server_name _*;
access_log logs/default.access.log combined;
location / {
index index.html;
root /data0/htdocs/htdocs;
}
}


}


基于ip的虚拟主机
/sbin/ifconfig eth0:1 192.168.8.43 broadcast 192.168.0.255 netmask 255.255.255.0 up
/sbin/route add -host 192.168.8.43 dev eth0:1


/sbin/ifconfig eth0:2 192.168.8.44 broadcast 192.168.0.255 netmask 255.255.255.0 up
/sbin/route add -host 192.168.8.44 dev eth0:2


这时eth0网卡设备上绑定了两个IP别名


通过ifconfig和route配置的IP别名在服务器重启后会消失,可以将这两条命令添加到/etc/rc.local文件中,让系统开机时自动运行


然后再Nginx.conf中,分别对三个IP配置三个纯静态HTML支持的虚拟主机如下:
基于ip地址的虚拟主机配置
http{
#第一个虚拟机
server
{
#监听的ip和端口
listen 192.168.182.128:80;
#主机名称
server_name 192.168.182.128;
#访问日志文件存放路径
access_log logs/server1.access.log combined;
location /
{
#默认首页文件,顺序从左到右,如果找不到index.html文件,则查找index.htm文件作为首页文件
index index.html index.html
#HTML网页存放的目录
root /data/0/htdocs/server1;
}
}


#第二个虚拟机
server
{
#监听的ip和端口
listen 192.168.182.129:80;
#主机名称
server_name 192.168.182.129;
#访问日志文件的存放路径
access_log logs/server2.access.log combined;
location /
{
#默认首页
index index.html index.htm;
#HTML网页存放的目录
root /data0/htdocs/server2;
}
}


#第三个虚拟机
server
{
#监听的ip和端口
listen 192.168.182.130:80;
#主机名称
server_name 192.168.182.130;
#访问日志文件的存放路径
access_log logs/server3.access.log combined;
location /
{
#默认首页
index index.html index.htm;
#HTML网页存放的目录
root /data0/htdocs/server3;
}
}
}


*************************************************************************************************
基于域名的虚拟主机配置
http
{
#第一个虚拟主机
server
{
#监听的端口
listen 80;
#主机名称
server_name aaa.domain.com;
#访问日志文件存放路径
access_log logs/aaa.domain.com.access.log combined;
location /
{
index index.html index.htm;
root /data0/htdocs/aaa.domain.com;
}
}

#第二个虚拟机
server
{
listen 80;
server_name bbb.otherdomain.com;
access_log logs/bbb.otherdomain.com.access.log combined;
location /
{
index index.html index.htm;
root /data0/htdocs/bbb.otherdomain.com;
}
}

#第三个虚拟主机
server
{
listen 80;
server_name www.domain.com domain.com *.domain.com;
access_log logs/bbb.domain.com.access.log combined;
location /
{
index index.html index.htm;
root /data0/htdocs/domain.com;
}
}


}


****************************************************************************************************
Nginx的日志文件配置与切割


access_log用于指定日志文件的存放路径 格式 和缓存大小
log_format用来设置日志的格式


log_format name format [format ...]
name表示定义的格式名称,format表示定义的格式,log_format有一个默认的,无须设置的combined日志格式设置,相当于Apache的combined日志格式


log_format combined '$remote_addr - $remote_user[$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';


log_format mylogformat '$http_x_forwarded_for - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';


access_log path [format [buffer=size | off]]
1>access_log off; 表示不想记录日志
2>access_log /data1/logs/filename.log;
或者 access_log /data1/logs/filename.log combined
3>access_log /data1/log/access.log mylogformat buffer=32k;
4>Nginx0.7.4之后的版本中access_log指令中的日志文件路径可以包含变量
access_log /data1/logs/$server_name.log combined
   ***如果文件路径含有变量有一下限制
    1.Nginx进程设置的用户和组必须有对该路径创建文件的权限
    2.缓冲不会被使用
    3.对每一条日志记录,日志文件都将先打开文件,再写入日志记录,然后关闭,为提高性能,须要使用open_log_file_cache指令设置经常被使用的日志文件描述符缓存,语法如下:
open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time] | off
默认为off
max : 设置缓存中最大文件描述符数量
inactive: 设置一个时间,如果设置的时间内没有使用此文件描述符,默认10s
min_uses:在参数inactive指定的时间范围内,如果日志文件超过使用的次数,将将该日志文件的描述符计入缓存,默认次数为1.
valid:设置多长时间检查一次,看一看变量指定的日志文件路径是否仍然存在.默认为60秒
open_log_file_cache max=1000 inactive=20s min_uses=2 valid=1m;


*********************************************************************************************
Nginx日志文件的切割
Nginx不支持像Apache一样使用cronolog来轮转日志,但可以使用kill -USR1实现日志文件的切割
mv /data1/logs/access.log  /data1/logs/20090318.log
kill -USR1 Nginx主进程


可以借助crontab每天定时切割日志
vi /usr/local/nginx/sbin/cut_nginx_log.sh


cut_nginx_log.sh内容如下:
============================================================
#!/bin/bash
#这个脚本在每天的00:00运行


#Nginx日志文件的存放路径
logs_path="/data1/logs/"


mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
mv ${logs_path}www.juzihc.com.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/juzihc_$(date -d "yesterday" +"%Y%m%d").log
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)


============================
chmod +x /usr/loca/nginx/sbin/cut_nginx_log.sh
crontab -e
=============================================================
00 00 * * * /bin/bash /usr/local/nginx/sbin/cut_nginx_log.sh
=============================


***********************************************************************************************************
Nginx的压缩输出配置
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;


Nginx的自动列目录配置
前提条件在当前目录下不存在用index指令设置的默认首页设置
location /
{
autoindex on;
}


atuoindex_exact_size [on | off]   设置索引文件大小的单位(B KB MB或GB)
autoindex_localtime [on | off]    开启以本地时间来显示文件时间的功能默认为关




Nginx的浏览器本地缓存设置

通过expires指令输出Header头来实现,expires指令的语法如下:
expires [time | epoch | max | off]
epoch 指定Expires的值为1 January,1970,00:00:01 GMT
max 指定Expires的值为31 December 2037 23:59:59 GMT, Cache-Control的值为10年, -1指定Expires的值为服务器当前-1s,即永远过期
Cache-Control
time为负数:Cache-Control:no-cache
time为正数或零:Cache-Control:max-age=指定的时间的秒数
off表示不修改Expires和Cache-Control的值
默认值: expires off
作用域: http , server , location

对常见格式的图片,flash文件在浏览器本地缓存30天,对js,css文件在浏览器本地缓存一小时
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}


location ~ .*\.(js|css)?$
{
expires 1h;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值