Nginx入门级学习笔记

14 篇文章 0 订阅
4 篇文章 0 订阅

Nginx学习笔记

一、Nginx简介

Nginx (engine x) 是一个高性能的HTTP反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。其特点是占有内存少,并发能力强。

Nginx作用:

  • 反向代理
  • 服务器负载均衡
  • 客户端动静分离

1.反向代理

正向代理:如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称之为正向代理。

简而言之,就是如果要访问一个网址,则通过一个中间网址来访问,这个中间网址也就是正向代理。

反向代理:客户端无需做任何配置,直接将请求发送给反向代理服务器,反向代理服务器会将请求转发给处理业务的服务器,也就说不会暴露真实处理业务的服务器的Ip,只会暴露反向代理服务器的ip。

总结:也就是说正向代理是将访问的客户端进行代理、隐藏,而反向代理是将要访问的服务端进行代理、隐藏。

2.负载均衡

随着并发数量增加,服务器会负载能力有限而出现超时等情况,这时候负载均衡就是用来处理这个问题的功能。负载均衡就是通过多个服务器一块,然后将本来是向一个服务器发送的所有请求分发给这些服务器,将负载进行均衡。

也就是Nginx可以作为反向代理服务器,将请求分发给一个服务器集群中,让不同的服务器来处理。

3.动静分离

为了加快解析速度,可以将动态资源和静态资源由不同的服务器来加载,这就是动静分离。

二、Nginx的安装

1.安装环境

安装gcc、pcre-devel、zlib-devel、openssl-devel

yum -y install gcc-c++	#-y表示全都同意,安装gcc
yum install -y pcre pcre-devel	#安装pcre-devel
yum install -y zlib zlib-devel	#安装zlib-devel
yum install -y openssl openssl-devel	#安装openssl-devel
pcre-config --version	#检查PCRE版本

2.下载Nginx

官方下载网址

3.安装Nginx

1.将安装包上传到/usr/local/src目录下

2.解压

tar -zxvf nginx-1.9.9.tar.gz	#-x解压,-v显示详情,-f制定解压文件

3.配置

./configure
make && make install	#make

安装完成后,在/usr/local中有个nginx文件夹,在sbin里面有nginx的启动脚本

4.启动Nginx

进入/usr/local/nginx/sbin/

然后输入./nginx执行

输入ps -ef|grep nginx查询进程

然后输入你的ip:80就能访问(:80可以省略)

如果访问不了就开放断口80

sudo firewall-cmd --add-port=80/tcp --permanent
#开放80断口,tcp协议,--permanent表示持久,关机重启都还有
#如果是云服务器,记得开启安全组

三、Nginx常用命令

使用Nginx命令前提:要进入Nginx的目录

cd /usr/local/nginx/sbin	#如果没有配置环境变量,就要在该目录下执行命令

命令:

./nginx -v	#查询Nginx版本号
./nginx -s stop	#关闭nginx
./nginx	#启动Nginx
./nginx -s reload	#重新加载配置文件

四、Nginx的配置文件

配置文件位置:/usr/loacl/nginx/conf/nginx.conf

一共由三部分组成:

  • 全局块
  • events块
  • http块

1.全局块

配置文件开始到events块之间的内容,涉及的是一些影响运行nginx服务器的配置指令。

例如worker_processes 1;就是表示并发处理数量,数值越大,并发处理数量越多

2.events块

主要是涉及影响nginx与用户的网络连接

例如worker_connections 1024;表示支持的最大连接数是1024

3.http块

配置最频繁的部分,又包括http全局块和server块

五、Nginx实现反向代理

1.设计思想

在浏览器中输入www.woshitest.com能够直接跳转到tomcat的主页

2.实现步骤

客户端访问www.woshitest.com,在hosts文件设置映射给本机端口80,就是转发给代理服务器nginx,然后再转发给tomcat

3.具体配置

修改nginx.conf

首先将server_name改成本机ip

然后设置转发地址

也就是proxy_pass http://localhost:8080;

六、Nginx实现负载均衡

1.设计思想

在浏览器中输入www.woshitest.com/a.html能够跳转到不同的服务器8080,8081

2.配置修改

在nginx配置文件中配置负载均衡

在server块将server_name改成本机ip

然后设置转发地址

也就是proxy_pass http://myserver;

upstream myserver {

​ server ip:8080;

​ server ip:8081;

}

默认轮询算法

如果学过ribbon还是很好理解的

3.算法

默认使用轮询算法

轮询算法就是逐一分配给后端服务器

weight算法

按照权重进行分配,权重越高分配的越多

在upstream myserver加上权重,例如


upstream myserver {

	server ip:8080 weight:10;

	server ip:8081 weight:5;

}

ip_hash

每个请求ip按照hash结果分配,配个固定访问一个服务器,解决session的问题,访问一次后之后就一直访问这个服务器。

upstream myserver {
	ip_hash;
	server ip:8080 ;

	server ip:8081 ;
	}

fair

按照后端服务器响应时间分配请求,响应时间段的优先

upstream myserver {

	server ip:8080 ;
	server ip:8081 ;
	fair;
}

七、Nginx实现动静分离

一个请求通过nginx时,nginx将请求中的动态请求分发给动态服务器处理,静态请求分发给静态处理器处理。

通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。

1.准备

在linux创建一个data目录,子目录image和www分别放置一个图片和一个html

2.配置修改

Location /wwww/ { 
	root	/data/ ;
	index index.html index.html;
}
Location / image/ {
	root /data/ ;
	autoindex on;
}

八、集群

假设只有一个Nginx,如果down机,会导致服务无法进行,所以需要多台Nginx集群,如果主服务器down机,就切换到备用服务器,达到高可用的效果。

在访问具体nginx时,首先访问一个vip(虚拟ip),之后转发给nginx集群

1.准备

安装多台Nginx

给每台Nginx安装Keepalived

yum -y install keepalived

2.配置修改

配置文件位置 /etc/keepalived/keepalivec.conf

global_defs {
    notification_email {
    acassen@firewall.loc
    failover@firewall.loc
    sysadmin@firewall.loc
    }
    notification_email_from Alexandre.Cassen@firewall.loc
    smtp_server 1 92.168.17.129
    smtp_connect_timeout 30
    router_id LVS_DEVEL
}
vrrp_script chk_http_port {
	script "/usr/local/src/nginx_check.sh"
	interval 2 # #(检测脚本执行的间隔
	weight 2
}
vrrp_instance VI_1 {
    state BACKUP # 备份服务器上将 MASTER 改为 BA CKUP
    interface name # 网卡名字,可以输入ifcong查询
    virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
    priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
    	vip // VRRP H 虚拟地址
   	}
}

脚本文件放到/usr/loacl/src下

#!/bin/bash
A=`ps
C nginx no header |wc l`
if [ $A
eq 0 ];then
    /usr/local/nginx/sbin/nginx
    sleep 2
    if [ `ps C nginx no header |wc l` eq 0 ];then
    	killall keepalived
    fi
fi

3.测试

启动nginx和keepalive

./nginx

systemctl start keepalived.service

九、keepalive配置详解

#全局配置
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 1 92.168.17.129
smtp_connect_timeout 30
router_id LVS_DEVEL #路由id,这个就是访问到的主机名字
}
#检测脚本配置
vrrp_script chk_http_port {
script “/usr/local/src/nginx_check.sh” #脚本位置
interval 2 #(检测脚本执行的间隔,每隔两秒检测一次)
weight 2 #如果脚本成立,该服务器权重+2)
}
#虚拟ip配置
vrrp_instance VI_1 {
state BACKUP # 表示是主服务器还是备份服务器,备份服务器上将 MASTER 改为 BACKUP
interface name # 网卡名字,可以输入ifcong查询
virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小
advert_int 1 #每隔多长时间发送一次心跳
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
vip // VRRP H 虚拟地址
}
}

十、Nginx工作原理

工作原理master+worker详解见博客

​ master下面可以有多个worker,每个woker都有自己独立的进程,互相之间争抢请求,不会造成服务中断。

worker 数和服务器的 cpu 数相等是最为适宜的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值