欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Nginx

程序员文章站 2022-07-12 16:57:29
...

一、nginx简介

nginx(发音同engine x)是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。

nginx的特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,*使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

二、nginx优点

  • 高并发连接:官方测试能够支撑5万并发连接,在实际生产环境中跑到2-3万并发连接数
  • 内存消耗少:在3万并发连接下,开启的10个nginx进程才消耗150M内存(15M*10=150M)
  • 配置文件非常简单:风格跟程序一样通俗易懂
  • 成本低廉:nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币
  • 支持Rewrite重写规则:能够根据域名、URL的不同,将HTTP请求分到不同的后端服务器群组
  • 内置的健康检查功能:如果Nginx Proxy后端的某台Web服务器宕机了,不会影响前端访问
  • 节省带宽:支持GZIP压缩,可以添加浏览器本地缓存的Header头
  • 稳定性高:用于反向代理,宕机的概率微乎其微
  • 模块化设计:模块可以动态编译
  • 外围支持好:文档全,二次开发和模块较多
  • 支持热部署:可以不停机重载配置文件
  • 支持事件驱动、AIO(AsyncIO,异步IO)、mmap(Memory Map,内存映射)等性能优化

三、nginx反向代理

多个客户端给服务器发送的请求,Nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时~请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,Nginx扮演的就是一个反向代理角色。

客户端是无感知代理的存在的,反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。

反向代理,“它代理的是服务端”,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。

1. 反向代理的作用

  • 保证内网的安全,通常将反向代理作为公网访问地址,Web服务器是内网
  • 负载均衡,通过反向代理服务器来优化网站的负载

2. 正向代理和反向代理的区别

  • 在正向代理中,Proxy和Client同属于一个LAN,隐藏了客户端信息
  • 在反向代理中,Proxy和Server同属于一个LAN,隐藏了服务端信息

四、nginx安装与配置

1. 下载

进入http://nginx.org/en/download.html下载,本人使用的是nginx-1.8.1版本,如图:
Nginx

2. 安装

2.1 安装环境

安装nginx需要如下环境:

2.1.1 gcc

编译依赖gcc环境,如果没有gcc环境,需要安装gcc

yum install gcc-c++
2.1.2 PCRE

PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。

yum install -y pcre pcre-devel
2.1.3 zlib

lib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。

yum install -y zlib zlib-devel
2.1.4 openssl

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的**和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。

yum install -y openssl openssl-devel

2.2 编译安装

nginx-1.8.1.tar.gz拷贝至linux服务器

解压,并进入解压后的文件:

tar -zxvf nginx-1.8.1.tar.gz
cd nginx-1.8.1

执行如下命令,配置:

./configure

开始编译和安装:

make
make install

安装成功查看安装目录,如下:
Nginx

2.3 启动nginx

启动:

cd /usr/local/nginx/sbin/
./nginx

查看:

ps -aux | grep nginx

Nginx

其中13612为Nginx的主进程id,worker process为Nginx的工作进程

2.4 重启nginx

cd /usr/local/nginx/sbin
./nginx -s reload

2.5 测试安装成功

访问对应安装Nginx的linux的ip,出现如下界面即安装成功:
Nginx

注意:如果出现访问失败,很可能是因为80端口没有开放,进行如下配置开启端口:
vim /etc/sysconfig/iptables

复制一行,端口改为80,如下:
Nginx
重启iptables:

service iptables restart

四、搭建负载均衡

1. 什么是负载均衡

负载均衡:建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

2. 负载均衡的优点

简单的来说。可以减少服务器的压力,将原本一台服务器所要承受的访问量分给了多台,并提高了项目的可用性,当一台服务器挂掉的时候也不会导致整个项目瘫痪。

3. nginx实现负载均衡

3.1 准备工作

nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至 tomcat服务器。
nginx负载均衡服务器:192.168.14.129
tomcat1服务器:192.168.14.131
tomcat2服务器:192.168.14.134

我们将两个相同的项目分别放到了131与134服务器中,当我们通过129负载访问项目接口时,nginx会自动将请求轮流分配给131与134来执行。

3.2 配置

以vim模式打开nginx.conf配置文件:

cd /usr/local/nginx/conf/
vim nginx.conf

根据上边的需求在nginx.conf文件中配置负载均衡,如下:

#在server上添加此upstream节点
upstream mytomcat{
    #分权 即访问131134的次数比例为11
    server 192.168.14.131:8080 weight=1;
    server 192.168.14.134:8080 weight=1;
    }

    server {
        listen 80;
        server_name localhost;
        #即所有请求都到这里去找分配
        location / {
       #使用mytomcat分配规则,即刚自定义添加的upstream节点
           proxy_pass http://mytomcat;
        }
    }

配置完成,保存并退出,重启nginx。

3.3 测试结果

多次访问此接口http://192.168.14.129/student/getInfo,通过后台日志我们发现两个服务器的接口分别轮流被调用,这样一个简单的负载就搭建完成了。

上一篇: Nginx

下一篇: Nginx