Nginx

Nginx

1 介绍

Nginx(“engine-x”)是一个高性能的开源反向代理服务器,也可以用作负载均衡器、HTTP缓存服务器和Web服务器。以下是关于Nginx的一些基本信息:

  1. 反向代理服务器: Nginx可以作为反向代理服务器,接受客户端请求并将其转发给后端服务器。它可以帮助处理静态文件、负载均衡、SSL终端等任务,提高系统性能和安全性。

  2. 负载均衡器: Nginx支持基于轮询、IP哈希、最小连接数等算法的负载均衡。通过分发请求到多个服务器,可以提高应用程序的可伸缩性和稳定性。

  3. HTTP缓存服务器: Nginx可以缓存静态文件,降低对后端服务器的请求压力,提高网站性能。它支持各种缓存策略,如过期时间、刷新策略等。

  4. Web服务器: 虽然Nginx在设计上更加注重反向代理和负载均衡,但它也可以作为独立的Web服务器使用。它支持静态和动态内容的处理,并能够通过FastCGI、uWSGI等与后端应用服务器进行通信。

  5. 高性能和低内存消耗: Nginx的事件驱动架构使其能够处理大量并发连接,同时保持较低的内存消耗。这使得Nginx成为处理高流量、高并发请求的理想选择。

  6. 模块化设计: Nginx采用模块化设计,允许用户通过添加模块来扩展其功能。它支持各种第三方模块,丰富了其功能,如安全性、性能优化等。

  7. 配置简单、易读: Nginx的配置文件采用简单的文本文件格式,易于理解和维护。其配置语法清晰,使得用户能够灵活地配置各种服务器行为。

2 Nginx 安装

  1. 安装所需依赖 pcre

    wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
    

    解压

    tar –xvf pcre-8.37.tar.gz
    

    进入解压缩目录执行

    ./configure
    

    若执行后出现 error,可再执行下行命令

    yum install -y gcc gcc-c++
    

    没问题后执行下行命令

    make && make install
    

    然后查看 pcre 是否安装成功

    pcre-config --version
    

    在这里插入图片描述

  2. 安装 openssl 、zlib 、 gcc 依赖

    yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
    
  3. 安装 Nginx
    下载地址:http://nginx.org/en/download.html
    下载完后解压

    tar –xvf nginx-1.12.2.tar.gz
    

    进入解压缩目录,依次执行

    ./configure
    make && make install
    

    进入目录 /usr/local/nginx/sbin后,启动 Nginx

    ./nginx
    

    练习过程中可以关闭防火墙

    systemctl stop firewalld
    

    然后浏览器访问虚拟机ip,访问成功:

    在这里插入图片描述

  4. 防火墙命令
    查看开放的端口

    firewall-cmd --list-all
    

    将某些端口设置为开放端口

    firewall-cmd --add-service=http –permanent
    firewall-cmd --add-port=80/tcp --permanent
    

    重启防火墙

    firewall-cmd  --reload
    
  5. Nginx 常用命令
    查看 nginx 版本

    ./nginx -v
    

    启动 nginx

    ./nginx
    

    关闭 nginx

    ./nginx -s stop
    

    重加载 nginx

    ./nginx -s reload
    

3 nginx.conf 配置文件

nginx.conf 是Nginx的主配置文件,其中包含了Nginx服务器的全局配置、http块配置以及server块配置等。以下是对一些常见配置项的解释:

  1. 所处位置

    /usr/local/nginx/conf/nginx.conf
    
  2. user: 指定Nginx worker进程运行的用户和用户组。例如:

    user www-data;
    
  3. worker_processes: 指定Nginx启动的worker进程的数量。通常设置为服务器的CPU核心数。

    worker_processes 1;
    
  4. error_log: 指定Nginx的错误日志文件路径。例如:

    error_log /var/log/nginx/error.log;
    
  5. pid: 指定Nginx主进程的PID文件路径。例如:

    pid /var/run/nginx.pid;
    
  6. events: 定义Nginx处理连接、请求等事件的方法。常见配置项有 worker_connections,表示每个worker进程能够同时处理的连接数。例如:

    events {
        worker_connections 1024;
    }
    
  7. http块: 包括 http 全局块、server 块。常见配置项有 include 用于引入其他配置文件,server 用于配置虚拟主机。例如:

    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        server {
            listen       80;
            server_name  localhost;
    
            location / {
                root   /usr/share/nginx/html;
                index  index.html index.htm;
            }
    
            # 其他 server 配置...
        }
    
        # 其他 http 配置...
    }
    
  8. include: 用于引入其他配置文件。这使得配置文件可以分为更小的模块,方便管理。例如:

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
    
  9. server: 定义虚拟主机的配置块,包含监听的端口、服务器名称、和处理请求的配置。例如:

    server {
        listen       80;
        server_name  example.com;
    
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    
        # 其他 location 配置...
    }
    

4 正向代理和反向代理

4.1 正向代理

正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。

4.2 反向代理

反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。
在这里插入图片描述

4.2.1 反向代理实例一

  1. 实现效果
    在浏览器地址栏输入地址 www.123.com,跳转到 linux 系统 tomcat 主页中

  2. 在 liunx 系统安装 tomcat,启动 tomcat

  3. 修改本机hosts文件

    c:\Windows\System32\drivers\etc\hosts
    

    添加以下内容

    192.168.64.128 www.123.com
    

    192.168.64.128 为虚拟机ip地址

  4. 配置 nginx.conf 文件
    在这里插入图片描述
    5. 启动 nginx
    6. 测试
    在这里插入图片描述

4.2.2 反向代理实例二

  1. 实现效果
    使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中,nginx 监听端口为 9001。

  2. 准备工作
    准备两个 tomcat 服务器,一个 8080 端口,一个 8081 端口
    创建文件夹和测试页面
    在这里插入图片描述
    tomcat8080里面的tomcat
    在8080的edu文件夹添加a.html,内容为:8080!
    在这里插入图片描述

    在8081的vod文件夹添加a.html,内容为:8081!
    分别启动8080和8081端口
    在这里插入图片描述

  3. 配置 nginx.conf 文件
    在这里插入图片描述

  4. 启动 nginx

  5. 测试
    地址栏输入:http://192.168.64.128:9001/edu/a.html,结果如下:
    在这里插入图片描述
    地址栏输入:http://192.168.64.128:9001/vod/a.html,结果如下:
    在这里插入图片描述

5 负载均衡

并发量特别大的时候容易造成服务器直接崩溃。这时候集群的概念产生了,单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡

5.1 负载均衡实例

  1. 实现效果
    浏览器地址栏输入地址 http://192.168.64.128/edu/a.html,负载均衡效果,平均 8080和 8081 端口中
  2. 准备工作
    (1)准备两台 tomcat 服务器,一台 8080,一台 8081
    (2)在两台 tomcat 里面 webapps 目录中,创建名称是 edu 文件夹,在 edu 文件夹中创建页面a.html,用于测试.
  3. 配置 nginx.conf 文件进行负载均衡(默认轮询)
    在这里插入图片描述
  4. 启动 nginx
  5. 测试
    在地址栏输入http://192.168.64.128/edu/a.html,结果:
    在这里插入图片描述
    点击刷新:
    在这里插入图片描述

5.2 nginx 分配服务器策略

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

    upstream myserver{
        server 192.168.64.128:8080;
        server 192.168.64.128:8081;
        # 添加更多后端服务器...
    }
    
  2. weight
    weight 代表权重默认为 1,权重越高被分配的客户端越多

    upstream myserver{
        server 192.168.64.128:8080 weight=3;
        server 192.168.64.128:8081 weight=1;
        # 添加更多后端服务器...
    }
    
  3. ip_hash
    每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器

    upstream myserver{
    	ip_hash;
        server 192.168.64.128:8080;
        server 192.168.64.128:8081;
        # 添加更多后端服务器...
    }
    
  4. fair(第三方)
    按后端服务器的响应时间来分配请求,响应时间短的优先分配。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值