一、关于Nginx
1.Nginx
Nginx同Apache一样都是一种WEB服务器。基于REST架构风格,以统一资源描述符(Uniform Resources Identifier)URI或者统一资源定位符(Uniform Resources Locator)URL作为沟通依据,通过HTTP协议提供各种网络服务。
Nginx是一个跨平台服务器,可以运行在Linux,Windows,FreeBSD,Solaris,AIX,Mac OS等操作系统上
Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,特点是占有内存少,并发能 力强
2.代理
1)正向代理: 隐藏客户端信息
正向代理最大的特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。
正向代理,"它代理的是客户端,代客户端发出请求",是一个位于客户端和原始服务器(origin server)之间的服务器
正向代理的用途:
1)访问原来无法访问的资源,如Google
2)可以做缓存,加速访问资源
3)对客户端访问授权,上网进行认证
4)代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
2)反向代理:隐藏服务端信息
请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确
反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只 需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返 回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器 地址,隐藏了真实服务器 IP 地址。
反向代理的作用:
1)保证内网的安全,通常将反向代理作为公网访问地址,Web服务器是内网
2)负载均衡,通过反向代理服务器来优化网站的负载
3)二者区别
在正向代理中,Proxy和Client同属于一个LAN,隐藏了客户端信息;
在反向代理中,Proxy和Server同属于一个LAN,隐藏了服务端信息;
实际上,Proxy在两种代理中做的事情都是替服务器代为收发请求和响应,不过从结构上看正好左右互换了一下,所以把后出现的那种代理方式称为反向代理了。
二、Nginx的安装与配置
1.安装依赖环境
gcc安装
yum install -y gcc-c++
PCRE安装:
pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式,所以需要安装pcre库。
安装命令:
yum install -y pcre pcre-devel
zlib安装:
zlib库提供了很多种压缩和解压缩方式nginx使用zlib对http包的内容进行gzip,所以需要安装
安装命令:
yum install -y zlib zlib-devel
OpenSSL安装:
penssl是web安全通信的基石,没有openssl,可以说我们的信息都是在裸奔,所以需要安装
安装命令:
yum install -y openssl openssl-devel
执行下命令安装上述命令 出现complete安装完成
yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
编辑
2.安装nginx
上传niginx压缩包 到 /usr/soft里面
编辑
3.解压文件
root@localhost soft]# tar -zxvf nginx-1.15.10.tar.gz
4.配置
进入目录nginx-1.15.10 并使用默认配置./configure
编辑
1). 编译和安装
make&&make install
2). 查看安装位置
whereis nginx
编辑
3).进入安装目录启动nginx
[root@localhost /]# cd /usr/local/nginx/sbin/
编辑
启动[ root@localhost sbin]# ./nginx
编辑
4). 查询nginx进程
ps aux|grep -v grep|grep nginx
ps -ef|grep -v grep|grep nginx
[ root@localhost sbin]# ./nginx -s reload 重新加载
[ root@localhost sbin]# ./nginx -s quit 此方式停止步骤是待nginx进程处理任务完毕进行停止。
[ root@localhost sbin]# ./nginx -s stop:此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。
5).访问nginx
出现下图界面安装成功
编辑
5.nginx配置文件
nginx.conf 主要由 全局块、events 块、http 块三部分组成
6.反向代理实例1
访问192.168.81.33 指向 http://192.168.81.33:8080/test;
进入nginx.conf配置文件设置代理
编辑
7.反向代理实例2
根据访问的路径跳转到不同端口的服务器中
编辑
location 指令说明 该指令用于匹配 URL。 语法如下:
location [ = | ~ |~* |^~] uri{}
1、= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配 成功,就停止继续向下搜索并立即处理该请求。
2、~:用于表示 uri 包含正则表达式,并且区分大小写。
3、~*:用于表示 uri 包含正则表达式,并且不区分大小写。
4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字 符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。 注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识。
8.Nginx配置负载均衡
修改nginx.conf文件
upstream 上游
upstream aaa
{
server 192.168.159.34:8080 ;
server 192.168.159.34:8081 ;
}
...
server {
listen 80;
server_name 192.168.109.35;
location /bbb {
root html;
index index.html index.htm;
proxy_pass http://aaa/;
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
2、weight
weight 代表权,重默认为 1,权重越高被分配的客户端越多
指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况
upstream aaa{
server 192.168.159.34:8080 weight=10;
server 192.168.159.34:8081 weight=100;
}
3、ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。 例如:
upstream aaa{
ip_hash;
server 192.168.159.34:8080 ;
server 192.168.159.34:8081 ;
}
4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream aaa{
fair;
server 192.168.159.34:8080 ;
server 192.168.159.34:8081 ;
}
三、配置nginx开机启动
1.创建nginx.service文件
切换到/lib/systemd/system/目录,并创建nginx.service文件
vim nginx.service 编辑以下内容 确认nginx.conf正确路径
编辑
配置之后需要使文件生效
systemctl daemon-reload
退出并保存文件,
执行systemctl enable nginx.service使nginx开机启动
2.设置开机自启动
nginx.service文件 完成后
[ root@localhost sbin] # ./nginx -s reload 重新加载
设置开机自启动
[ root@localhost sbin] # systemctl enable nginx.service
查询当前状态 running自启动成功
编辑
3.其他命令
#开机自启动
systemctl enable nginx.service
#停止开机自启动
systemctl disable nginx.service
#查询当前状态
systemctl status nginx.service
#启动服务
systemctl start nginx.service
#重新启动服务
systemctl restart nginx.service
#停止服务
systemctl stop nginx.service
#重新加载配置
systemctl reload nginx.service