1、环境
Centos6
软件包安装:
[root@test /]#yum -y install gcc openssl-devel zlib-devel pcre-devel
说明:pcre库是为了使Nginx支持HTTP Rewrite模块
2、开始安装Nginx
默认情况下,经过编译安装的Nginx 包含了大部分可用模块。可以通过“./configure --help”选项设置各个模块的使用情况,对不需要的http_ssi模块,通过“--without-http_ssi_module”方式关闭。如果需要“http_perl”模块,通过“--with-http_perl_module”方式进行安装。
[root@test /]# cd /soft
[root@test soft]# ls
nginx-1.2.7.tar.gz
[root@test soft]# tar -xzvf nginx-1.2.7.tar.gz
[root@test soft]# ls
nginx-1.2.7 nginx-1.2.7.tar.gz
[root@test soft]# ln -s nginx-1.2.7 nginx
[root@test soft]# ls
nginx nginx-1.2.7 nginx-1.2.7.tar.gz
[root@test soft]# cd nginx
[root@test nginx]# ls
auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src
[root@test nginx]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module
[root@test nginx]# make
[root@test nginx]# make install
说明:在configure选项中,“--weith-http_stub_status_module”用来启用Nginx的NginxStatus功能,以监控Nginx的当前状态。
3、Nginx配置文件的结构
Nginx 的配置文件是一个纯文本文件,位于Nginx 安装目录conf 目录下,整个配置文件是以block 的形式组织的。每个block 一般以一个大括号“{}”来表示,block
可以分为几个层次,整个配置文件中main 指令位于最高层,在main 层下面可以有Events、HTTP 等层级,而HTTP 层中又包含有server 层,即server block,server block 又可分为location 层,并且一个server block 中可以包含多个location block。
4、配置与调试Nginx
Nginx的配置路径为/usr/local/nginx/conf,其中nginx.conf为Nginx的主配置文件。
Nginx的配置文件主要分为4部分:main(全局设置)、server(主机设置)、upstream(负载均衡服务器设置)和location(URL匹配特定位置的设置)。main部分设置的指令将影响其它所有设置;server部分的指令主要用于指定主机和端口;upstream指令主要用于负载均衡,设置一系列的后端服务器;location部分用于匹配网页位置。
关系:server继承main,location继承server,upstream既不会集成其它设置也不会被继承。
在这4 个部分当中,每个部分都包含若干指令,这些指令主要包含Nginx 的主模块指令、事件模块指令、HTTP核心模块指令。同时每个部分还可以使用其他HTTP 模块 指令,例如Http SSL 模块、Http Gzip Static 模块和Http Addition 模块等。
通过配置Nginx实例,介绍nginx.conf指令的含义。
1、Nginx的全局配置
Nginx的全局属性配置:
user nobody nobody;
#主模块指令,指定Nginx Worker进程运行用户以及用户组,默认nobody运行
worker_processes 1;
#主模块指令,指定Nginx开启的进程数
error_log logs/error.log notice;
#主模块指令,定义全局错误日志文件。日志输出级别有debug、info、notice、warn、error、crit,其中,debug输出日志最详细,而crit输出日志最少
pid logs/nginx.pid;
#主模块指令,指定进程id的存储文件位置
worker_rlimit_nofile 65536;
#绑定worker进程和CPU
events{
#events指令用来设定Nginx的工作模式及连接数上限
use epoll;
#use是个事件模块指令,指定Nginx的工作模式。Nginx支持工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll是标准的工作模式,kqueue和epoll是高效的工作模式,epoll用在Linux平台,kqueue用在BSD平台。Linux平台,epoll工作模式是首选。
worker_connections 65536;
#worker是个事件模块指令,定义Nginx每个进程的最大连接数,默认是1024。最大客户端连接数由worker_processes和worker_connections决定,即max_client=worker_processes*worker_connections,作为反向代理时:max_client=worker_processes*worker_connections/4。进程最大连接数受Linux系统进程的最大打开文件数限制,执行操作系统命令“ulimit -n 65536”后worker_connections设置才能生效
}
2、HTTP服务器配置
Nginx对HTTP服务器的相关属性的配置:
http{
include mime.types;
#主模块命令,实现对配置文件所包含的文件设定,可以减少主配置文件的复杂度。
default_type application/octet-stream;
#属于HTTP核心模块指令,默认类型为二进制流
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
' "$http_user_agent" "$http_x_forwarded_for" ';
access_log logs/access.log main;
#Nginx的HttpLog模块指令,指定Nginx日志的输出格式。main为日志输出格式的名称,可以在access_log指令中引用
sendfiles on;
#用于开启高效文件传输模式
tcp_nopush on;
#用来防止网络阻塞
keepalive_timeout 65;
#设置客户端请求头读取超时时间
}
3、HttpGzip模块配置
Nginx的HttpGzip模块。这个模块支持在线实时压缩输出数据流。查看是否安装此模块:
[root@test conf]# /usr/local/nginx/sbin/nginx -V
gzip on;
#设置开启或者关闭gzip模块,“gzip on”表示开启gzip压缩,实时压缩输出数据流
4、server虚拟主机配置
虚拟主机配置。
server{
listen 80;
#指定虚拟主机的服务器端口
server_name 192.168.1.119 test;
#指定IP地址或者域名,多个域名之间用空格分开
charset gb2312;
#设置网页的默认编码格式
access_log logs/test.access.log main;
#指定此虚拟主机的访问日志存放路径。main用于指定访问日志的输出格式
location / {
root web;
#root用于指定虚拟主机的网页根目录,目录可以是相对路径,也可以是绝对路径
index index.html index.htm;
#index用于设定访问的默认首页地址
}
error_page 404 /404.html;
#定制各种错误信息的返回页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
5、URL匹配配置
URL地址匹配是Nginx配置中最灵活的部分。location支持正则表达式匹配,也支持条件匹配,可以通过location指令实现Nginx对动、静态网页的过滤处理。
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
root html;
expires 30d;
}
#这段是通过location指令对网页URL进行分析处理,所有扩展名.gif、.jpg、.jpeg 、.png、 .bmp 、.swf的静态文件都交给Nginx处理,而expires指定静态文件的过期时间
location ~ ^/(upload|html)/ {
root web;
expires 30d;
}
#这段设置是将upload和html下的所有文件都交给Nginx处理,upload和html目录包含在web目录中
location ~ .*.jsp$ {
index index.jsp;
proxy_pass http://localhost:8080;
}
#这段设置中,location是对此虚拟主机下动态网页的过滤处理,将所有以.jsp为后缀的文件都交给本机的8080端口处理
5、Nginx启动、关闭和重启
1、Nginx基本信息检查
检查Nginx配置文件的正确性
/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
#“-t”参数用于检查配置文件是否正确,但不执行,“-c”参数用于指定配置文件路径
2、显示Nginx的版本以及编译信息
/usr/local/nginx/sbin/nginx -v
#显示安装Nginx的版本信息
/usr/local/nginx/sbin/nginx -V
#显示相关编译信息
3、重新加载配置文件
/usr/local/nginx/sbin/nginx -s reload