Nginx
1 Nginx是什么?
Nginx (engine x) 是一个轻量级的、高性能的、基于 Http 的、反向代理服务器,同时还 是一个电子邮件服务器。 Nginx 最初是由俄罗斯人 Igor Sysoev(伊戈尔·赛索耶夫)使用 C 语言为俄罗斯访问量第 二的 Rambler.ru 站点开发的一款服务器。2004 年 10 月发布第一个版本。 国内大型的站点,例如百度、京东、新浪、网易、腾讯、淘宝等,都使用了 Nginx。
2 为什么使用Nginx?
因为Nginx是基于事件的,它不用为每个请求产生新的进程或线程,所以它的内存使用很低
3 Nginx特点
- 高并发
- 低消耗
- 热部署
- 高扩展
- 高可用
4 正向代理和反向代理
正向代理,当客户端无法访问外部资源的时候(由于诸如墙这样的原因),可以通过一个正向代理去间接地访问,所以客户端需要配置代理服务器的ip。
正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理
作用:
1. 保证内网的安全,公网作为访问地址,web服务器谁内网
2. 负载均衡
5. 安装Nginx
1. 熟悉Cenos7相关命令(centos7默认没有 netstat 命令,需要安装 net-tools 工具,yum install -y net-tools)
开放端口: firewall-cmd --zone=public --add-port=端口号/tcp --permanent
关端口:firewall-cmd --zone=public --remove-port=端口号/tcp --permanent
生效配置:firewall-cmd --reload
查看防火墙以开放的端口:firewall-cmd --zone=public --list-ports
关闭防火墙:systemctl stop firewalld.service
防火墙状态:firewall-cmd --state
查看监听的端口:netstat -lnpt
检查端口被哪个进程占用:netstat -lnpt |grep 端口号
查看端口详细信息:ps 端口号
强制关闭端口:kill -9 端口号
tar命令: tar -z以gzip的算法解压或者压缩
-x解压一个tar包
-v显示指令执行过程
-f指定要解压/压缩文件名
-c 创建一个tar包/压缩
解压通常用法tar -zxvf filename 如果要压缩的话z换成c
1. 官网下载相应nginx版本tar包
2. 使用xftp上传到linux
3. 解压tar包
4. 安装所需依赖
- yum install zlib zlib-devel
- yum install openssl openssl-devel
- yum -y install gcc gcc-c++ autoconf automake make 安装c++编译环境
5. 进入解压开的nginx-1.16.1文件夹找到 configure 执行 ./ configure
6. 然后执行make( nginx是一个完全由C语言编写的程序
make命令是将文件编译就想java的javac一样)
在执行make install(make install这个命令是将nginx安装)
安装好后可以在./usr/local/目录下发现一个nginx的文件夹.
这个就是安装好后的nginx。安装好后目录结构如下
1. 启动nginx
在使用nginx前有几个注意点
1. Nginx用的是80端口 , 把端口对外开放
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
2. 启动:安装好的nginx目录中有一个sbin,里面是一个nginx(可执行文件执行(./nginx)
3. 启动后直接在网页输入本机ip即可访问 页面如下
Nginx常用命令
6 Nginx配置文件的整体结构
1. 从图中可以看出主要包含以下几大部分内容:
-
全局块
该部分配置主要影响Nginx全局,通常包括下面几个部分:
配置运行Nginx服务器用户(组)
worker process数
Nginx进程PID存放路径
错误日志的存放路径
配置文件的引入
-
events块
该部分配置主要影响Nginx服务器与用户的网络连接,主要包括:
设置网络连接的序列化
是否允许同时接收多个网络连接
事件驱动模型的选择
最大连接数的配置
-
http块
定义MIMI-Type
自定义服务日志
允许sendfile方式传输文件
连接超时时间
单连接请求数上限
-
server块
配置网络监听
基于名称的虚拟主机配置
基于IP的虚拟主机配置
-
location块
location配置
请求根目录配置
更改location的URI
网站默认首页配置
2. 一份配置清单例析
按照前面文章,给出一份简要的清单配置举例:
7.Nginx负载均衡
2.1 轮询
轮询方式是Nginx负载默认的方式,顾名思义,所有请求都按照时间顺序分配到不同的服务上,如果服务Down掉,可以自动剔除,如下配置后轮训10001服务和10002服务。
upstream dalaoyang-server {
server localhost:10001;
server localhost:10002;
}
2.2 权重
指定每个服务的权重比例,weight和访问比率成正比,通常用于后端服务机器性能不统一,将性能好的分配权重高来发挥服务器最大性能,如下配置后10002服务的访问比率会是10001服务的二倍。
upstream dalaoyang-server {
server localhost:10001 weight=1;
server localhost:10002 weight=2;
}
2.3 iphash
每个请求都根据访问ip的hash结果分配,经过这样的处理,每个访客固定访问一个后端服务,如下配置(ip_hash可以和weight配合使用)。
upstream dalaoyang-server {
ip_hash;
server localhost:10001 weight=1;
server localhost:10002 weight=2;
}
2.4 最少连接
将请求分配到连接数最少的服务上。
upstream dalaoyang-server {
least_conn;
server localhost:10001 weight=1;
server localhost:10002 weight=2;
}
2.5 fair
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream dalaoyang-server {
server localhost:10001 weight=1;
server localhost:10002 weight=2;
fair;
}
路由 |
路由 |
真实服务器 |
代理服务器 |
防火墙 |