Nginx在Linux的部署

什么是Nginx

Nginx同Apache一样都是一种WEB服务器。基于REST架构风格,以统一资源描述符(Uniform Resources Identifier)URI或者统一资源定位符(Uniform Resources Locator)URL作为沟通依据,通过HTTP协议提供各种网络服务。

Nginx使用基于事件驱动架构,使得其可以支持数以百万级别的TCP连接

高度的模块化和自由软件许可证使得第三方模块层出不穷(这是个开源的时代啊~)

Nginx是一个跨平台服务器,可以运行在Linux,Windows,FreeBSD,Solaris,AIX,Mac OS等操作系统上

Nginx有什么用处

Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,特点是占有内存少,并发能 力强,事实上 nginx 的并发能力确实在同类型的网页服务器中表现较好

作为服务器

Nginx 可以作为静态页面的 web 服务器,同时还支持 CGI 协议的动态语言,比如 perl、php 等。但是不支持 java。Java 程序只能通过与 tomcat 配合完成。Nginx 专为性能优化而开发, 性能是其最重要的考量,实现上非常注重效率 ,能经受高负载的考验,有报告表明能支持高 达 50,000 个并发连接数。

nginx可以7*24小时不间断运行

作为代理

说到代理,首先我们要明确一个概念,所谓代理就是一个代表、一个渠道;

此时就涉及到两个角色,一个是被代理角色,一个是目标角色,被代理角色通过这个代理访问目标角色完成一些任务的过程称为代理操作过程;

正向代理与反向代理

正向代理

客户端请求发送给代理服务器,代理服务器代替客户端去访问网页,最后将数据传递给我们。

客户端非常明确要访问的服务器地址;

正向代理隐藏了客户端的真实信息,对于被访问网页的服务器只知道请求来自哪个代理服务器

客户端必须要进行一些特别的设置才能使用正向代理。

正向代理的用途:

(1)访问原来无法访问的资源,如Google

(2)可以做缓存,加速访问资源

(3)对客户端访问授权,上网进行认证

(4)代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息

反向代理

客户端发送请求到代理服务器,代理服务器从多台服务器获取到数据返回给客户端,对于客户端来说不知道是那台服务器处理的请求,隐藏了真实的服务器的地址,通过暴漏在外的代理服务器访问。

反向代理的作用:

(1)保证内网的安全,通常将反向代理作为公网访问地址,Web服务器是内网

(2)负载均衡,通过反向代理服务器来优化网站的负载

负载均衡

客户端多个请求到服务器单个服务器解决不了,我们通过增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡

将服务器接收到的请求按照规则分发的过程,称为负载均衡。

Nginx支持的负载均衡调度算法

  1. 轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
  2. weight轮询(常用,具有HA功效!):接收到的请求按照权重分配到不同的后端服务器,即使在使用过程中,某一台后端服务器宕机,Nginx会自动将该服务器剔除出队列,请求受理情况不会受到任何影响。 这种方式下,可以给不同的后端服务器设置一个权重值(weight),用于调整不同的服务器上请求的分配率;权重数据越大,被分配到请求的几率越大;该权重值,主要是针对实际工作环境中不同的后端服务器硬件配置进行调整的。
  3. ip_hash(常用):每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,这也在一定程度上解决了集群部署环境下session共享的问题。
  4. fair:智能调整调度算法,动态的根据后端服务器的请求处理到响应的时间进行均衡分配,响应时间短处理效率高的服务器分配到请求的概率高,响应时间长处理效率低的服务器分配到的请求少;结合了前两者的优点的一种调度算法。但是需要注意的是Nginx默认不支持fair算法,如果要使用这种调度算法,请安装upstream_fair模块。
  5. url_hash:按照访问的url的hash结果分配请求,每个请求的url会指向后端固定的某个服务器,可以在Nginx作为静态服务器的情况下提高缓存效率。同样要注意Nginx默认不支持这种调度算法,要使用的话需要安装Nginx的hash软件包。

动静分离

为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速 度。降低原来单个服务器的压力。

Nginx的安装与配置

安装依赖环境:

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

如果以上命令执行比较麻烦可以执行如下命令

        yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

安装Nginx

上传压缩包到 /usr/下的文件夹 (建议新建)

tar -zxvf 解压

进入解压的目录下执行 configure 文件 使用默认配置

configure命令是用来检测你的安装平台的目标特征的。它定义了系统的各个方面,包括nginx的被允许使用的连接处理的方法,比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本可以使用 ./ 或 编译器来运行 (如: sh),执行结束时,它会创建一个Makefile文件。


make是用来编译的,从Makefile中读取指令,然后编译。

make install是用来安装的,从Makefile中读取指令,安装到指定的位置。

执行 make 进行编译 

执行 make install 进行安装

指令完成后 会在 /usr/local/ 下生成 nginx 文件夹

whereis nginx 查看安装位置

cd /usr/local/nginx/sbin/

        ./nginx 启动

        ./nginx -s reload 重启

        ./nginx -s quit 此方式停止步骤是待nginx进程处理任务完毕进行停止。

        ./nginx -s stop:此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。

nginx默认监听80端口 浏览器输入Linux ip 可以查看是否 运行成功(安装成功)

nginx配置文件 (nginx.conf)

全局块

从配置文件开始到 events 块之间的内容,主要会设置一些影响 nginx 服务器整体运行的配置指令,主要包括配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等。

比如第一行

worker_processes 1;

这是 Nginx 服务器并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约

events 块

events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word process 可以同时支持的最大连接数等。

events {

worker_connections 1024;

}

上述例子就表示每个 work process 支持的最大连接数为 1024.

这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。

http 块

这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。

需要注意的是:http 块也可以包括 http 全局块、server 块。

server{

listen 80; nginx 使用的端口号是80

server_name localhost; (192.168.221.32)

}

反向代理实例

nohup java -jar 包名 &  运行项目

通过 vim /usr/local/nginx/conf/nginx.conf 配置代理地址

配置完成后通过访问  Linux ip 即可访问代理地址

注意 proxy_pass http://192.168.253.16:8080/test;

图上缺少          ;    

路径符号功能

= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配 成功,就停止继续向下搜索并立即处理该请求。

~:用于表示 uri 包含正则表达式,并且区分大小写。

~*:用于表示 uri 包含正则表达式,并且不区分大小写。

^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字 符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。 注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识。

Nginx配置负载均衡

准备 多个服务器 或 运行多个端口模拟

案例使用为多个虚拟机

nginx主要修改 vim /usr/local/nginx/conf/nginx.conf 配置代理地址

nginx.conf文件

upstream

upstream主要是完成网络数据的接收、处理和转发,访问上游服务器,它把Nginx定义为代理服务器

vim /usr/local/nginx/conf/nginx.conf 配置代理地址

负载均衡的策略配置

轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。

weight

weight 代表权,重默认为 1,权重越高被分配的客户端越多

指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况

upstream aaa{
server 192.168.159.34:8080 weight=10;         
server 192.168.159.34:8081 weight=100;
}

ip_hash

每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。 例如:

upstream aaa{

ip_hash;

server 192.168.159.34:8080 ;

server 192.168.159.34:8081 ;

}

fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream aaa{

fair;

server 192.168.159.34:8080 ;

server 192.168.159.34:8081 ;

}

动静分离配置

​​​​​ http://t.csdnimg.cn/69kyw

配置nginx开机启动

切换到/lib/systemd/system/目录,创建nginx.service文件vim nginx.service

cd /lib/systemd/system/

vi nginx.service

添加内容如下:

[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx  -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s  reload
ExecStop=/usr/local/nginx/sbin/nginx  -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target

配置之后需要使文件生效
systemctl daemon-reload
退出并保存文件,执行systemctl enable nginx.service使nginx开机启动
#开机自启动
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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值