Linux环境下安装nginx

Linux环境下安装nginx

说明:本案例主要针对nginx单机环境搭建、正反向代理配置验证、负载均衡配置验证进行说明
前置条件:1台Linux服务器(本案例使用CentOS7)、3台安装tomcat(本案例使用8.5.69版本)的服务器

一、nginx介绍

nginx是一个高性能的HTTP和反向代理服务器,核心特点是占用内存小,并发能力强

nginx应用场景:
①web服务器
②反向代理服务器
③负载均衡服务器
④动静分离

nginx特点:
①跨平台–nginx可以在大多数类unix平台上编译运行,也支持windows的版本
②单次请求响应快,高并发情况下可以更快处理响应
③稳定性好,宕机概率低
④扩展性好–由多个不同功能、不同层次、不同类型且耦合度很低的模块组成
⑤低内存消耗–一般10000个没有活动的连接,仅占用2.5M内存
⑥高并发–单机支持50000个并发连接数
⑦热部署–master管理进程和worker工作进程分离设计,使得nginx支持热部署
⑧代码开源

二、nginx单机环境搭建

  1. nginx依赖安装,执行yum install -y gcc zlib zlib-devel pcre-devel openssl openssl-devel命令进行自动安装 (建议使用yum源自动安装),也可在官网下载gcc、zlib、openssl依赖包手动安装
    gcc安装
    zlib、openssl、pcre安装
    注:如果不安装这些基础的依赖环境,直接安装nginx,安装过程会报缺少xxx依赖的问题
    (1)安装gcc依赖的目的–nginx基于c语言开发,编译的过程需要用到gcc环境
    (2)安装openssl依赖的目的–openssl提供了强大的安全套接字密码库,包括主要的密码算法、常用的密钥和证书封装管理功能,nginx不仅支持http还支持https,在https加密时需要用到openssl库
    (3)安装zlib依赖的目的–nginx对包的内容进行gzip的时候,需要用到zlib库提供的压缩和解压缩功能
    (4)安装pcre依赖的目的–nginx的http模块进行rewrite时需要用到pcre解析正则表达式

  2. 下载nginx安装包,将nginx安装包上传至服务器,执行tar -zxvf nginx-xxxx.tar.gz命令进行解压缩(本案例使用的nginx版本为1.18.0)
    解压nginx安装包

  3. 配置nginx编译环境,nginx安装包下有一个configure脚本,执行这个脚本,会进行环境检查、参数解析、目录生成、Makefile文件生成等工作,执行./configure --help命令查看脚本可以解析的参数,选取最常用一些参数进行说明
    脚本支持解析的参数
    注:
    prefix–指定部署根目录,默认根目录为/usr/local/nginx
    sbin-path–可执行文件的路径,默认为/sbin/nginx(相对prefix设置的根目录而言)
    conf-path–配置文件路径,默认为/conf/nginx.conf(相对prefix设置的根目录而言)
    error-log-path–报错日志存储路径,默认为/logs/error.log(相对prefix设置的根目录而言)
    http-log-path–请求日志存放路径,默认为/logs/access.log(相对prefix设置的根目录而言)

  4. 执行./configure环境编译脚本命令,本案例部署路径采用默认路径,也可以在./configure命令后添加对应的参数信息指定nginx安装的路径
    执行环境编译脚本
    从上图可以看到,环境编译脚本执行成功后,nginx安装目录以及各文件的生成目录已指定完成

  5. 执行make && make install命令进行正式安装,安装成功后,进入指定的部署根目录下,可以看到生成的nginx相关文件
    安装nginx

  6. nginx安装完成后,cd到conf目录下,执行vim nginx.conf命令查看nginx配置文件,可以看到,nginx初始化监听的是localhost的80端口,当访问80端口时,nginx会直接请求html目录下的index.html静态文件
    nginx配置文件

  7. cd到sbin可执行目录下,执行./nginx命令,启动nginx,进行nginx访问测试(nginx启动后,会在logs目录下生成access.log、error.log、nginx.pid文件,nginx启动前,logs目录下为空)
    nginx启动访问测试

三、正向代理

  1. 正向代理从用途上来讲,可以给防火墙内的局域网提供访问internet的途径,从安全上来讲,正向代理允许客户端通过代理服务器访问任意网站,并且隐藏访问者本身,因此,使用正向代理需要采取安全措施来确保只为经过授权的客户端提供服务

  2. 正向代理图解,代理服务器将客户端发送请求,重定向到目标服务器,再将目标服务器响应信息返回给客户端
    nginx正向代理图解

  3. nginx正向代理配置

server {
        # 指定DNS服务器
        resolver 114.114.114.114;
        # 指定超时时间
        resolver_timeout 30s;
        # 监听端口
        listen       8080;

        location / {
            # 配置正向代理参数
            proxy_pass http://$http_host$request_uri;
            proxy_set_header Host $http_host;
            # 配置缓存大小
            proxy_buffers 256 4k;
            proxy_max_temp_file_size 0;
            # 代理连接超时时间
            proxy_connect_timeout 30;
            # 配置代理服务器http状态缓存时间
            proxy_cache_valid 200 302 10m;
            proxy_cache_valid 301 1h;
            proxy_cache_valid any 1m;
        }
    }

注:正向代理配置完成后,需要执行./nginx -s reload命令重启nginx才能生效
目前比较主流的DNS:
114:114.114.114.114 www.114dns.com
腾讯:119.29.29.29 www.dnspod.cn
阿里:223.5.5.5 alidns.com
百度:180.76.76.76 dudns.baidu.com
4. 验证正向代理是否成功,可以在服务器执行curl http://www.baidu.com -v -x 127.0.0.1:监听端口号命令直接查看验证,也可以通过设置浏览器代理,直接在浏览器上访问服务器ip+监听端口测试
正向代理测试

注:本案例只对http访问做了正向代理验证

四、反向代理

  1. 反向代理用用途上来讲,是将防火墙内的服务器提供给internet用户进行访问,从安全角度讲,代理服务器代理的是目标服务器,用户不知道真正访问的是哪个服务器,反向代理中,目标服务器对于用户来讲是透明的

  2. 反向代理图解,用户向代理服务器发送请求,经代理服务器分发至对应目标服务器响应,并将响应结果返回用户
    反向代理图解

  3. nginx反向代理配置,cd到conf目录下,执行vim nginx.conf命令修改配置信息(本案例代理访问tomcat,需要准备一台安装tomcat的服务器)

server {
        # 监听端口
        listen 82;
        # 监听服务器
        server_name 192.168.132.138;

        location / {
             # 代理服务器地址
             proxy_pass http://192.168.132.144:8080;
        }
    }

注:因nginx默认监听本机80端口,因此在做反向代理时,对外暴露监听的端口号不要选用80端口,如果监听80端口,经测试,浏览器访问ip:80不会请求目标服务器的地址,响应的是nginx的欢迎页面
4. 修改nginx.conf配置文件后,需要cd到sbin目录下,执行./nginx -s reload命令重启nginx,修改的配置信息才能生效
5. 反向代理效果测,从测试结果可以看到,浏览器请求nginx代理服务器地址,nginx会把请求下发到代理的目标服务器上,将目标服务器的响应返回给客户端
反向代理效果测试

五、负载均衡

  1. 负载均衡是将多个访问请求分摊到多个服务单元上,使得原本一台服务单元的负载量交由多个服务单元进行处理,进而提高了系统的吞吐量,当一台目标服务器宕机或者发生故障,仍然不影响系统的正常使用,进而提高了系统的可靠性,负载均衡是解决高性能、高可用,可扩展的解决方案
    nginx提供的负载均衡策略:
    ①轮询,也是nginx的默认策略,请求会被均匀的下发到目标服务器
    ②加权轮询,通过设置weight属性值来分配目标服务器的访问权重,weight默认值为1,设置的权重值越大,被分配的请求概率也就越大
    ③最少连接,请求分配给活动连接数最少的服务器,活动连接数是由nginx进行统计
    ④ip_hash,每个请求按照访问ip的hash结果进行分配,相同的hash值会被分配到同一台服务器,解决了session共享的问题,但是无法解决session粘性问题
    ⑤fair,根据节点服务器的响应时间来分配,响应时间短的服务器优先分配,nginx本身不支持fair算法,需要下载upstream_fair模块
    ⑥url_hash,根据url的hash结果进行分配,让每一个url定向到同一个节点服务器,nginx本身不支持url_hash,需要安装nginx的hash模块软件包
  2. cd到conf目录下,执行vim nginx.conf命令进行负载均衡配置,并对轮询算法进行验证
# 轮询节点服务器
upstream lxserver {
        server 192.168.132.144:8080;
        server 192.168.132.145:8080;
        server 192.168.132.146:8080;
    }

    server {
        # 监听代理服务器端口
        listen 82;
        server_name 192.168.132.138;

        location / {
             proxy_pass http://lxserver;
        }
    }

轮询验证
从上图可以看出,轮询算法每次请求,都会按照顺序一次分配给144、145、146三台服务器
3. 验证加权轮询算法

# 轮询节点服务器,通过配置weight权重属性,控制nginx分发请求的概率
upstream lxserver {
        server 192.168.132.144:8080 weight=1;
        server 192.168.132.145:8080 weight=2;
        server 192.168.132.146:8080 weight=3;
    }

    server {
        listen 82;
        server_name 192.168.132.138;

        location / {
             proxy_pass http://lxserver;
        }
    }

经过多次访问可以看出请求分配给146服务器的比例明显大于145、144两台服务器
4. 验证最小连接数算法

# 轮询节点服务器,通过配置least_conn属性,nginx会自动计算节点服务器的最小连接数,并将请求分配给连接数最小的节点服务器
upstream lxserver {
        least_conn;
        server 192.168.132.144:8080;
        server 192.168.132.145:8080;
        server 192.168.132.146:8080;
    }

    server {
        listen 82;
        server_name 192.168.132.138;

        location / {
             proxy_pass http://lxserver;
        }
    }
  1. 验证ip_hash算法
# 轮询节点服务器,通过配置ip_hash属性,nginx会根据请求客户端的ip进行hash计算,并将ip发送的请求分配到固定的节点服务器
upstream lxserver {
		ip_hash;
        server 192.168.132.144:8080;
        server 192.168.132.145:8080;
        server 192.168.132.146:8080;
    }

    server {
        listen 82;
        server_name 192.168.132.138;

        location / {
             proxy_pass http://lxserver;
        }
    }

注:当有节点服务器需要剔除的时候,需要手动down掉,ip_hash不能和backup同时使用
backup属性:标识该节点服务器作为备用服务器,当主服务器停止工作时,备份服务器开启工作

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值