Nginx教程(1)Nginx-1.13.10编译安装与配置说明
一、Nginx特性介绍
1、Nginx使用epoll事件驱动模型(异步非阻塞),I/O多路复用(多个I/O操作能在一个线程内交替完成,复用就是指线程的复用)使得性能十分卓越
2、Nginx配置较轻量级,功能模块化,上手容易
3、Nginx支持CPU亲和,让不同的Nginx进程绑定在不同的CPU核心上,减少CPU切换带来的性能损耗
4、Nginx使用了sendfile传输,对文件的传输从内核空间完成,不再经过用户空间,加快响应
5、支持4层和7层反向代理
二、Nginx主要发行版本介绍
Nginx开源版:Nginx官方出品,http://nginx.org
Nginx Plus:Nginx官方出品的商业产品,http://www.nginx.com
OpenResty:基于Nginx和LUA的Web平台,通过大量的LUA扩展了Nginx的功能
Tengine:淘宝二次开发并开源的Nginx
三、Nginx编译安装方法(以Nginx开源版1.13.10为例,其他版本安装方式基本一样)
1、在安装Nginx之前需要确保系统里已经安装相关依赖,如pcre库(提供正则表达式和Rewrite模块的支持)、zlib库(提供Gzip压缩)、openssl库(提供ssl支持),使用yum直接安装这些依赖环境即可,不需要额外编译
yum install pcre pcre-devel openssl openssl-devel zlib zlib-devel -y
2、为Nginx创建好用户和用户组,编译时会用上这个信息,后面启动服务时也会指定该用户
groupadd nginx useradd -s /sbin/nologin -g nginx nginx
3、进入Nginx源码包后运行configure脚本来编译安装Nginx1.13。其中--with开头的选项通常是开启一些模块,而带有temp的选项一般是执行对应模块时产生的临时文件所存放的路径。--add-module是使用第三方模块
./configure \ --prefix=/usr/local/nginx \ --user=nginx \ --group=nginx \ --sbin-path=/usr/local/nginx/sbin/nginx \ --conf-path=/usr/local/nginx/conf/nginx.conf \ --error-log-path=/usr/local/nginx/logs/error.log \ --http-log-path=/usr/local/nginx/logs/access.log \ --pid-path=/usr/local/nginx/nginx.pid \ --with-pcre \ --with-http_ssl_module \ --with-http_realip_module \ --with-http_flv_module \ --with-http_mp4_module \ --with-http_gzip_static_module \ --with-http_stub_status_module make && make install #--prefix=path:设置Nginx的安装路径,不写的话默认是在/usr/local/nginx #--sbin-path=path:设置Nginx的可执行文件路径,默认路径是prefix/sbin/nginx #--conf-path=path:设置Nginx配置文件路径,默认路径是prefix/conf/nginx.conf #--pid-path=path:设置Nginx pid文件路径,默认路径是prefix/logs/nginx.pid #--error-log-path=path:设置错误日志存放路径,默认路径是prefix/logs/error.log #--http-log-path=path:设置访问日志存放路径,默认路径是prefix/logs/access.log #--user=name:设置运行Nginx的用户,默认用户是nobody #--group=name:设置运行Nginx的用户组,默认用户组是nobody #--with-http_ssl_module:启用Nginx的SSL功能 #--with-http_realip_module:该模块可以记录原始客户端的IP而不是负载均衡的IP #--with-http_sub_module:文字内容替换模块,可用于替换全站敏感字等 #--with-http_flv_module:开启对FLV格式文件的支持 #--with-http_mp4_module:开启对MP4格式文件的支持 #--with-http_gzip_module:提供对gzip压缩的支持 #--with-http_stub_status_module:开启Nginx状态监控模块 #--with-pcre:支持正则表达式
小提示:源码包中有一个contrib/vim目录,把该目录的所有文件拷贝到用户家目录的vim目录,可以实现nginx.conf配置文件的语法高亮,非常好用
cp -r contrib/vim/* ~/.vim/
四、Nginx基本结构和配置
1、Nginx编译安装完成后会在安装目录中创建以下子目录
sbin : 存放Nginx的二进制程序和管理工具
conf:存放Nginx配置文件
logs:存放Nginx日志文件存放目录
html:存放Nginx网页文件,通常会定义到其他目录,不会直接使用它
2、Nginx主配置文件语法结构
· Nginx的主配置文件由指令与指令块构成,指令块以{ }大括号将多条指令组织在一起
· 每条指令以;分号结尾,指令与参数间用空格分隔
· 支持include语句组合多个配置文件,提升可维护性
· #表示注释,$表示变量,部分指令的参数支持正则表达式
3、Nginx主配置文件结构与参数详解
Main为全局配置;Events为全局配置,主要是事件驱动相关的配置;Server负责虚拟主机的配置,在server标签中还存在location标签,可以根据条件匹配来对不同的访问路径做不同的配置,实现URL转发等功能。
4、Nginx.conf配置文件示例
user nginx; #定义运行Nginx的用户 worker_processes 2; #Nginx所开启的子进程数,通常和cpu个数相等或者设置为auto worker_cpu_affinity auto; #自动进行CPU亲和设置 #worker_cpu_affinity 0000000000000001 000000000000010 #手动进行CPU亲和设置 worker_rlimit_nofile 65535; #一个worker进程最多能打开的文件数 error_log logs/error.log warn; #Nginx服务的错误日志路径与记录级别 pid /var/run/nginx.pid; worker_rlimit_nofile 65535; #设置Nginx进程文件句柄数 events { worker_connections 10240; #每个子进程能处理的最大连接数 use epoll; #使用epoll事件驱动模型,该选项可不配置 } http { include mime.types; #文件扩展名与文件类型映射表,通过这个文件告诉浏览器针对不同的资源应该进行什么样的处理 default_type application/octet-stream; #如果请求的资源不在mime.types中将按照这里定义的类型进行操作 charset utf-8; #默认字符集 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; #访问日志存放路径与日志记录格式,这里main就是上一步log_format所定义的main sendfile on; tcp_nopush on; #一次传输多个数据包,提高传输效率 #tcp_nodeley off #与tcp_nopush相反,实时性要求比较高的场景会打开这个 keepalive_timeout 65; #长连接超时时间为65秒 gzip on; #打开gzip后通过浏览器开发者工具-网络功能可以看到size大小被压缩了,对文本类型的文件压缩效率最高,可作用于location中 include /etc/nginx/conf.d/*.conf #conf.d目录下的配置文件也会生效 server { listen 80; #监听80端口,还可配置为IP或IP+端口的形式 server_name linuxe.cn www.linuxe.cn *.linuxe.cn; #可以写多个域名,精确匹配优先级>通配符>正则,都不匹配则匹配default server access_log logs/access.log main; #单独对主机记录日志 location ~ .*\.(jpg|gif|png)$ { gzip on; expires 24h; #开启缓存,如果是取的缓存数据,浏览器开发者工具中返回状态是304 root html; index index.html index.htm; } #error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }
五、Nginx启动管理
/usr/local/nginx/sbin/nginx -t #检查配置文件是否有错 /usr/local/nginx/sbin/nginx -v #查看Nginx版本 /usr/local/nginx/sbin/nginx -V #查看Nginx安装时所用的编译选项,使用yum安装的也可以看到 /usr/local/nginx/sbin/nginx -s #发送信号,如stop、restart、reload、reopen /usr/local/nginx/sbin/nginx -c #指定其他配置文件来启动nginx
评论