Linux 配置系列 七 Nginx

一、环境

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 模块说明

  1. main(全局设置):设置的命令将影响其他所有设置
  2. server(虚拟主机设置):主要用于指定主机和端口
  3. upstream(负载均街服务器设置):主要用于负载均衡,设置一系列的后端服务器。
  4. location(URL匹配特定位置的设置): 用于匹配网页位置
  5. 这四者之间的关系式server继承main, location 继承server, upstream 既不会继承其他设置也不会被继承
  6. 每个部分都包含若干命令,这些命令主要包含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;
       }
    }
 }
  1. nginx location语法
  • = 严格匹配。如果这个查询匹配,那么将停止搜索并立即处理此请求。
  • ~ 为区分大小写匹配(可用正则表达式)
  • !~为区分大小写不匹配
  • ~* 为不区分大小写匹配(可用正则表达式)
  • !~*为不区分大小写不匹配
  • ^~ 如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式。
  1. 例子
# 只匹配 / 查询
location = / {
}
# 匹配任何查询,因为所有请求都以 / 开头。但是正则表达式规则和长的块规则将被优先和查询匹配
location / {
}
# 匹配任何以 /people/ 开头的任何查询并且停止搜索。任何正则表达式将不会被测试
location ^~ /people/ {
}
# 匹配任何以 gif、jpg 或 jpeg 结尾的请求。
location ~*.(gif|jpg|jpeg)$ {
}
6.3.1 负载均衡策略
  1. 轮询(默认)
  • 如果服务器down掉了,会自动剔除该服务器
  • 默认配置就是轮询策略
  • 此策略适合服务器配置相当,无状态且短平快的服务使用

upstream 参数:

  • fail_timeout:与max_fails结合使用,默认10秒
  • max_fails:设置在fail_timeout参数设置的时间内最大失败次数,如果在这个时间内,所有针对该服务器的请求都失败了,那么认为该服务器会被认为是停机了,默认为1
  • fail_time:服务器会被认为停机的时间长度,默认为10s
  • backup:标记该服务器为备用服务器。当所有主服务器停止时,请求会被发送到这里
  • down:标记服务器永久停机了,不会将请求分配给它
  • max_conns:限制分配给某台Server处理的最大连接数量,超过这个数量,将不会分配新的连接给它。默认为0,表示不限制
  • weight:默认值为1,权重越高分配到需要处理的请求越多
  1. 权重(weight)
  • 在轮询策略的基础上制定的沦陷的几率,主要用weight参数设置
  • weight的数值和被访问的几率成正比;
  • 比较适合服务器的硬件配置差别比较大的情况
  1. 最少连接数(least_conn)
    将下一个请求分配到连接数最少的那台服务器上,当一些请求需要更长的时间响应,最少连接可以更公平地控制应用程序实例的负载。nginx会将请求转发到负载较少的服务器
  2. ip-hash
    基于客户端的IP地址。原因是负载均衡每次请求都会重新定位到服务器集群中的某一个,那么已经登录某一个服务器的用户再重新定位到另一个服务器,其登录信息将会丢失,这样明显不太妥。采用ip_hash解决这个问题,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器,请求被固定到某一个后端服务器,也可以解决如session问题

6.4 其他

  1. worker_processes(工作进程数)
  • 默认:worker_processes 1
  • 调整:worker_processes 4 如CPU核心数,(双核4线程,可以设置为4),具体根据实际清空调整
  • 直接设置为auto,可根据需求自动调整
  1. 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值
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值