Nginx配置教程:Nginx-1.13.10编译安装与配置

2020年11月23日14:20:02 发表评论 1,022

一、Nginx主要特性

1、Nginx使用epoll事件驱动模型(异步非阻塞),I/O多路复用(多个I/O操作能在一个线程内交替完成,复用就是指线程的复用)使得性能十分卓越

2、Nginx配置较轻量级,功能模块化,上手容易

3、Nginx支持CPU亲和,让不同的Nginx进程绑定在不同的CPU核心上,减少CPU切换带来的性能损耗

4、Nginx使用了sendfile传输,对文件的传输从内核空间完成,不再经过用户空间,加快响应

5、支持4层和7层反向代理

二、Nginx编译安装

以Nginx-1.13.10版本为例,对Nginx的编译安装与基本配置做一个介绍,其他版本安装方式基本也是一样的。

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的二进制程序:
/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

conf:存放Nginx配置文件

logs:存放Nginx日志文件存放目录

html:存放Nginx网页文件,通常会定义到其他目录,不会直接使用它

2、Nginx主配置文件语法结构(根据上面的编译安装参数,这个文件就是/usr/local/nginx/conf/nginx.conf):

· Nginx的主配置文件由指令与指令块构成,指令块以{ }大括号将多条指令组织在一起

· 每条指令以;分号结尾,指令与参数间用空格分隔

· 支持include语句组合多个配置文件,提升可维护性

· #表示注释,$表示变量,部分指令的参数支持正则表达式

3、Nginx主配置文件结构与参数详解

Main为全局配置;Events为全局配置,主要是事件驱动相关的配置;Server负责虚拟主机的配置,在server标签中还存在location标签,可以根据条件匹配来对不同的访问路径做不同的配置,实现URL转发等功能。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;  #默认文件类型
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;
}

 

    发表评论

    :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: