文章目录
一、环境
linux版本:CentOS7.6 64位
nginx版本:1.14.2 下载地址:https://nginx.org/download/
二、安装配置
2.1 检查确认依赖包是否已安装
yum list installed gcc pcre-devel zlib-devel openssl-devel
2.2 安装依赖包
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
2.3. 安装nginx
把nginx-1.14.2.tar.gz放入/usr/local/文件目录下
#1.解压
tar -zxvf nginx-1.14.2.tar.gz
#2.进入nginx-1.14.2并配置
cd nginx-1.14.2 && ./configure --prefix=/usr/local/nginx
#3.编译
make && make install
说明:"–with-xxx="的值是解压目录,而不是安装目录
三、 查看是否安装成功
##进入nginx安装目录输入查看命令
cd /usr/local/nginx && ./sbin/nginx -t
# 成功安装显示如下
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
四.、配置环境变量
4.1 编辑/etc/profile
vi /etc/profile
4.2 增加配置
PATH=$PATH:/usr/local/nginx/sbin
export PATH
4.3 使配置立即生效
source /etc/profile
五、常用操作命令
# 启动Nginx
nginx
#退出服务
nginx -s quit
#强制关闭服务:
nginx -s stop
#重载服务
nginx -s reload (重载服务配置文件,类似于重启)
#验证配置文件
nginx -t
#根据配置文件的位置启动
nginx -c "配置文件路径"
#使用帮助
nginx -h
#查看版本
nginx -v
#查看编译版本及配置的参数
nginx -V
说明:执行以上命令需先配置环境
六、nginx.conf常见配置
6.1 模块说明
- main(全局设置):设置的命令将影响其他所有设置
- server(虚拟主机设置):主要用于指定主机和端口
- upstream(负载均街服务器设置):主要用于负载均衡,设置一系列的后端服务器。
- location(URL匹配特定位置的设置): 用于匹配网页位置
- 这四者之间的关系式server继承main, location 继承server, upstream 既不会继承其他设置也不会被继承
- 每个部分都包含若干命令,这些命令主要包含Nginx的主模块命令,事件模块命令,HTTP核心模块命令,同时每个部分还可以使用其他HTTP模块命令(例如HTTP SSL模块,HttpGzip Static模块和Http Addition模块等)
6.2 反向代理
定义:客户端本来可以直接通过HTTP协议访问某网站应用服务器,如果网站管理员在中间加上一个Nginx,客户端请求Nginx,Nginx请求应用服务器,然后将结果返回给客户端,此时Nginx就是反向代理服务器
server {
listen 80;
location / {
proxy_pass http://www.baidu.com #请求转到百度
#proxy_pass http://192.168.0.101:8080; # 应用服务器HTTP地址
}
}
6.3 负载均衡
定义:nginx反向代理服务器设置一定策略,把用户请求分配到A、B、C…N台应用服务器处理
#定义要包含在负载均衡方案中的服务器
http {
upstream stream {
#weigth参数表示权重,权重越高被分配到的几率越大,默认为1
#下面表示101有3分之2几率,102有3分之1几率
server 10.1.0.101 weight=2;
server 10.1.0.102:8001 weight=1;
#server 10.1.0.103:8003 backup;
#server demo.com;
#将同一用户引入同一服务器。
#ip_hash;
#最少连接数,将被分配到请求
#least_conn;
#如果有3次请求失败,nginx在20秒内,不会将新的请求分配给它
#server 10.1.0.104:8004 max_fails=3 fail_timeout=20s
}
#该服务器接受到端口80的所有请求并将其传递给上游upstream
server {
listen 80;
location / {
#请注意,upstream名称和proxy_pass需要匹配
proxy_pass http://stream;
}
}
}
- nginx location语法
- = 严格匹配。如果这个查询匹配,那么将停止搜索并立即处理此请求。
- ~ 为区分大小写匹配(可用正则表达式)
- !~为区分大小写不匹配
- ~* 为不区分大小写匹配(可用正则表达式)
- !~*为不区分大小写不匹配
- ^~ 如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式。
- 例子
# 只匹配 / 查询
location = / {
}
# 匹配任何查询,因为所有请求都以 / 开头。但是正则表达式规则和长的块规则将被优先和查询匹配
location / {
}
# 匹配任何以 /people/ 开头的任何查询并且停止搜索。任何正则表达式将不会被测试
location ^~ /people/ {
}
# 匹配任何以 gif、jpg 或 jpeg 结尾的请求。
location ~*.(gif|jpg|jpeg)$ {
}
6.3.1 负载均衡策略
- 轮询(默认)
- 如果服务器down掉了,会自动剔除该服务器
- 默认配置就是轮询策略
- 此策略适合服务器配置相当,无状态且短平快的服务使用
upstream 参数:
- fail_timeout:与max_fails结合使用,默认10秒
- max_fails:设置在fail_timeout参数设置的时间内最大失败次数,如果在这个时间内,所有针对该服务器的请求都失败了,那么认为该服务器会被认为是停机了,默认为1
- fail_time:服务器会被认为停机的时间长度,默认为10s
- backup:标记该服务器为备用服务器。当所有主服务器停止时,请求会被发送到这里
- down:标记服务器永久停机了,不会将请求分配给它
- max_conns:限制分配给某台Server处理的最大连接数量,超过这个数量,将不会分配新的连接给它。默认为0,表示不限制
- weight:默认值为1,权重越高分配到需要处理的请求越多
- 权重(weight)
- 在轮询策略的基础上制定的沦陷的几率,主要用weight参数设置
- weight的数值和被访问的几率成正比;
- 比较适合服务器的硬件配置差别比较大的情况
- 最少连接数(least_conn)
将下一个请求分配到连接数最少的那台服务器上,当一些请求需要更长的时间响应,最少连接可以更公平地控制应用程序实例的负载。nginx会将请求转发到负载较少的服务器 - ip-hash
基于客户端的IP地址。原因是负载均衡每次请求都会重新定位到服务器集群中的某一个,那么已经登录某一个服务器的用户再重新定位到另一个服务器,其登录信息将会丢失,这样明显不太妥。采用ip_hash解决这个问题,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器,请求被固定到某一个后端服务器,也可以解决如session问题
6.4 其他
- worker_processes(工作进程数)
- 默认:worker_processes 1
- 调整:worker_processes 4 如CPU核心数,(双核4线程,可以设置为4),具体根据实际清空调整
- 直接设置为auto,可根据需求自动调整
- worker_connections,单个工作进程可以允许同时建立外部连接的数量
events {
worker_connections 65535;
}
- 默认:worker_connections 1024
- 如上设置,调整到65535连接,可通过 ulimit -n 命令查询操作系统进程最大可打开文件数,实际调整不能超过系统限制的最大数
- 可通过 ps -elf | grep nginx 找到 nginx 的worker进程ID,再通过 cat /proc/进程id/limits 查看open file值