nginx安装配置

2016-04-06 20:51:27

nginx安装配置

1. nginx安装启停命令

1.1 nginx安装包链接点击这里
1.2 Yum安装:
vim /etc/yum.repos.d/nginx.repo 
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpg
check=0
enabled=1
1.3 源码安装,prefix表示安装路径,默认/usr/local/,gzip支持文件压缩,pcre支持正则匹配,ssl支持https加密,add-module表示编译三方模块到nginx;安装nginx前linux需安装pcre、openssl和zlib库,或者下载源码在编译nginx时,指定路径到nginx

安装前先安装依赖包:

yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel

编译安装如下:

tar xvzf nginx-1.9.14.tar.gz
cd nginx-1.9.14
./configure --prefix=/opt/nginx \
--with-http_gzip_static_module \
--with-pcre --with-http_stub_status_module \
--add-module= gnosek-nginx-upstream-fair \
--with-http_ssl_module --with-zlib
make && make install
1.4 更多安装的编译选项点击这里
1.5 安装完成之后启停操作:
/opt/nginx/sbin/nginx
/opt/nginx/sbin/nginx -c /opt/nginx/conf/nginx.conf #-c选项启动时指定配置文件
ps -ef |grep nginx #查看进程
netstat -tlnp|grep 80 #查看端口
/opt/nginx/sbin/nginx -t #检查配置文件
/opt/nginx/sbin/nginx -s reload #重新加载配置
/opt/nginx/sbin/nginx -s stop (kill -HUP pid)

2. nginx配置文件说明

2.1 全局配置
#全局配置项
user nginx nginx; #运行用户和用户组,master进程仍是root权限
worker_processes 2; #进程数,基本和cpu核数保持一致,最多不要大于8
worker_cpu_affinity 01 10; #内核绑定,在2核的cpu是如此配置
worker_rlimit_nofile 51200; #设置文件描述符
error_log logs/error.log info; #全局错误日志定义类型
pid logs/nginx.pid; #nginx进程文件
#Events配置项
use epoll; #高效的I/O模型
worker_connections 51200; #每个进程允许最大连接数
#Http配置项
对所有的虚拟主机(server)生效
#Server配置项
只对单个虚拟主机(server)生效
2.2 基础配置
#log_format,设置输出日志格式:
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;
#gzip,设置文件压缩:
gzip on; #开启gzip压缩输出,减少网络传输
gzip_min_length 1k; #设置允许压缩的页面最小字节数
gzip_buffers 4 16k; #设置系统获取几个单位的缓存
gzip_http_version 1.1; #用于识别 http 协议的版本
gzip_comp_level 2; # gzip压缩比,1压缩比最小处理速度最快,9压缩比最大但处理速度最慢
gzip_types text/plain text/css application/xml ; #匹配mime类型进行压缩
server_tokens off; #隐藏服务器的版本号,也可伪造nginx版本信息,src/core/nginx.h中
autoindex on; #开启目录列表访问,合适下载服务器,默认关闭
#expires,设置浏览器本地缓存:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$ {
root /download;
expires 7d;
}
#与http服务相关一些参数
sendfile on; #开启高效文件传输模式
keepalive_timeout 65; #长连接超时时间
send_timeout; #指定响应客户端的超时时间
client_max_body_size 10m; #允许客户端请求的最大单文件字节数
client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数
#访问控制 allow/deny
location /nginxstatus {
stub_status on;
access_log off;
allow 192.168.1.1;
deny all;
} #只允许IP为 192.168.1.1访问地址 /nginxstatus/查看nignx当前状态

3. nginx中location匹配规则

3.1 语法

location [ =|~|~*|^~|@ ] /uri/ { … }

3.2 匹配原则

先普通 location ,再匹配正则 location = ^~ uri ~ ~
@为内部匹配,外面请求调不通
详细说明:先遍历普通location,如匹配到=的uri,终止匹配;如无匹配到=,遍历匹配^~的uri,如匹配到,终止匹配;如有多条匹配结果,取最长的一条匹配规则,此处不终止匹配,继续遍历~和~
的location,匹配第一条后终止,如若未匹配到,选取上面最长的一条匹配规则

3.3 实例
location = / {
/ 匹配

}
location / {
/index.html匹配到
}
location /documents/ {
/documents/documents.html匹配到
}
location ^~ /images/ {
/images/1.jsp匹配到
}
location ~* \.(gif|jpg|jpeg)$ {
/documents/1.jsp匹配到
}

4. nginx中rewrite模块

4.1 URL重写

~ 区分大小写
~* 不区分大小写

4.2 条件判断

-f和!-f用来判断是否存在文件
-d和!-d用来判断是否存在目录
-e和!-e用来判断是否存在文件或目录
-x和!-x用来判断文件是否可执行

4.3 标记

last(持续匹配);break(匹配一次后终止)
redirect;permanent ;临时(302)/永久(301)重定向

4.4 Nginx 变量
$args :						#这个变量等于请求行中的参数,同$query_string
$content_length : #请求头中的Content-length字段
$content_type : #请求头中的Content-Type字段
$document_root : #当前请求在root指令中指定的值
$host : #请求主机头字段,否则为服务器名称
$http_user_agent : #客户端agent信息
$http_cookie : #客户端cookie信息
$limit_rate : #这个变量可以限制连接速率
$request_method : #客户端请求的动作,通常为GET或POST
$remote_addr : #客户端的IP地址
$remote_port : #客户端的端口
$remote_user : #已经经过Auth Basic Module验证的用户名。
$request_filename : #当前请求的文件路径,由root或alias指令与URI请求生成
$scheme : #HTTP方法(如http,https)
$server_protocol : #请求使用的协议,通常是HTTP/1.0或HTTP/1.1
$server_addr : #服务器地址,在完成一次系统调用后可以确定这个值
$server_name : #服务器名称
$server_port : #请求到达服务器的端口号
$request_uri : #包含请求参数的原始URI,不包含主机名,如:”/login.jsp?usr=abc”
$uri : #不带请求参数的当前URI,$uri不包含主机名,如”/login.jsp”
$document_uri : #与$uri相同。
4.5 正则标识
	. :		#匹配除换行符以外的任意字符
? : #重复0次或1次
+ : #重复1次或更多次
* : #重复0次或更多次
\d : #匹配数字
^ : #匹配字符串的开始
$ : #匹配字符串的介绍
{n} : #重复n次
{n,} : #重复n次或更多次
[c] : #匹配单个字符c
[a-z] : #匹配a-z小写字母的任意一个
小括号()之间匹配的内容,可以在后面通过$1来引用,$2表示的是前面第二个()里的内容,\是转义特殊字符
4.6 If 语句
if ($uri ~* ^/(auth/tologin|auth/loginsubmit)$ ) {
rewrite ^(.*)$ https://$host$1 permanent;
}

5. gdb查看nginx的core文件

5.1 编译调试版本的nginx,可看到堆栈信息
5.2 用gdb命令查看core文件

gdb nginx.debug core.xxxx
在进入gdb后,用bt命令查看backtrace以检查发生程序运行到哪里,来定位core dump的文件->行