Nginx网站服务

发布于:2024-08-13 ⋅ 阅读:(165) ⋅ 点赞:(0)

目录

一、Nginx服务基础

1、Nginx概述

1.1、Nginx简介

1.2、Nginx的功能

1.3、Nginx的基础特性

1.4、Nginx 应用场景

2、Nginx的架构

3、Nginx 进程结构

4、Nginx 模块

5、Nginx 相对于 Apache 的优缺点

二、编译安装Nginx 服务

1、yum部署

1.1、yum安装Nginx

1.2、yum安装的nginx的配置文件

2、Nginx编译安装

2.1、下载安装包

2.2、安装依赖包且创建用户与组

2.3、编译安装Nginx

2.4、添加 Nginx 系统服务

三、Nginx的主配置文件nginx.conf

1、全局配置

2、I/O 事件配置

3、HTTP配置

四、实战案例

1、Nginx的访问状态统计

1.1、检查模块

1.2、修改 nginx.conf 配置文件

1.3、重启服务并测试

2、基于授权的访问控制

2.1、生成用户密码认证文件

2.2、修改 Nginx 主配置文件,添加认证配置项

2.3、重启服务并进行测试:

3、基于客户端的访问控制

3.1、编辑 Nginx 主配置文件,添加访问控制规则

3.2、重启服务应用配置

4、基于IP 的 Nginx 虚拟主机

4.1、配置网卡

4.2、编辑Nginx配置文件,设置多个监听地址

4.3、重启Nginx服务并测试

5、基于端口的 Nginx 虚拟主机

5.1、编辑Nginx配置文件

5.2、重启Nginx服务并测试

五、升级Nginx(18——>22)

1、下载22版本安装包、解压

2、安装模块、并进行编译

3、备份18版本Nginx,更换22版本Nginx文件

4、重启服务,查看版本


一、Nginx服务基础

1、Nginx概述

1.1、Nginx简介

Nginx ("engine x") 是一个 高性能 HTTP 和反向代理服务器。 Nginx 是由 Igor Sysoev 为俄
罗斯访问点开量第二的 Rambler.ru 站发的,第一个公开版本 0.1.0 发布于 2004 10 4 日。其将源 代码以类 BSD 许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而 闻 名。2011 年 6 1 日, Nginx 1.0.4 发布。 1.18 1.20 1.22 1.12
Nginx 是一款轻量级的 Web 服务器 / 反向代理服务器及电子邮件( IMAP/POP3 )代理服务器,
单台物理服务器 可支持 30 000 50 000 个并发请求 。并在一个 BSD-like 协议下发行。由俄罗斯的程序设 计师 Igor Sysoev 所开发,供俄国大型的入口网站及搜索引擎 Rambler (俄文: Рамблер )使用。其特 点是占有内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中表现较好,中国 大陆使用 Nginx 网站用户有:百度 BWS 、新浪、网易、腾讯、等。
Nginx 官网:
RamBler:http://www.rambler.ru/
nginx: http://nginx.org/
Mainline version 主线版本
Stable version
稳定版本
Legacy versions 老版本,遗产版本
旧版本下载:http://mirrors.sohu.com/nginx/
Nginx 中文参考地址: http://www.nginx.cn/doc/

1.2、Nginx的功能

静态资源的 Web 服务器

  • 功能:NGINX 可以作为静态资源服务器,直接处理并提供 HTML、图片、JavaScript、CSS、文本文件等静态内容的请求。

  • 应用场景:适用于部署网站的静态内容,减少后端服务器的负载,提升页面加载速度。

HTTP/HTTPS 协议的反向代理

  • 功能:NGINX 支持 HTTP 和 HTTPS 协议的反向代理,可以将客户端的请求根据 URL、域名等规则转发到后端服务器。

  • 应用场景:常用于 Web 应用的负载均衡和请求转发,实现高并发、高可用性的网站架构。

动态资源请求的反向代理

  • 功能:NGINX 可以通过 FastCGI、uWSGI、SCGI 等协议,将动态资源请求(如 PHP、Python、Ruby 等)转发到后端应用服务器处理。

  • 应用场景:适用于需要处理动态内容的 Web 应用,与 Apache、Django、Flask 等服务器协作,分担负载。

TCP/UDP 协议的请求转发(四层代理)

  • 功能:NGINX 支持 TCP 和 UDP 协议的请求转发,作为四层代理服务器,将流量转发到指定的后端服务器。

  • 应用场景:适用于非 HTTP/HTTPS 的服务,如数据库、邮件服务等网络应用的负载均衡和高可用性配置。

1.3、Nginx的基础特性

模块化设计与较好的扩展性:NGINX 采用模块化设计,核心功能可以通过加载不同的模块进行扩展。这种设计使得 NGINX 能够灵活适应各种需求,提供如 gzip 压缩、SSL 加密、URL 重写、访问控制等功能,提升服务器的灵活性和适应性。

高可靠性:NGINX 以其高可靠性著称,能够在高并发和高负载的环境下保持稳定运行。它支持多种故障恢复机制,如自动故障切换和健康检查,确保服务的连续性和可用性。

支持热部署:NGINX 支持热部署,可以在不中断服务的情况下重新加载配置文件、升级版本、或更换日志文件。这种功能使得管理员能够在不影响现有连接的情况下进行配置更新和系统维护,避免服务中断。

低内存消耗:NGINX 在处理大量并发连接时表现出色,内存消耗极低。在 keep-alive 模式下,处理 10,000 个非活动连接仅需约 2.5MB 的内存资源,充分展示了其在资源使用上的高效性。

事件驱动架构与高性能 I/O:NGINX 采用事件驱动架构,结合异步 I/O(AIO)、内存映射(mmap)、以及 sendfile 系统调用,能够高效地处理大量并发连接。这些技术使得 NGINX 在处理静态和动态内容时都能保持高性能,适用于高流量的网站和应用。

这些基础特性使得 NGINX 成为一个强大而灵活的服务器,广泛应用于各种 Web 应用和网络服务的部署中。

1.4、Nginx 应用场景

  • 静态服务器:NGINX 能够高效处理静态内容的请求,包括图片、视频、文本文件等。作为静态服务器,NGINX 可以直接提供 HTML、CSS、JavaScript 等文件,并通过 sendfile 等技术优化文件传输,适用于高流量的网站和内容分发网络(CDN)。
  • 动态服务:通过与 FastCGI、uWSGI、SCGI 等协议集成,NGINX 可以作为动态内容的反向代理,将请求转发给后端应用服务器(如 PHP、Python、Ruby 等)。这种设置允许 NGINX 处理动态服务的请求,同时分担后端服务器的负载,提高整体性能。
  • 反向代理与负载均衡:NGINX 常用作反向代理服务器,负责将客户端请求转发到多个后端服务器。通过支持多种负载均衡策略(如轮询、最少连接、IP 哈希等),NGINX 能够有效分配流量,提升系统的高可用性和可扩展性。此外,NGINX 还可以处理 SSL 终端、HTTP/2 和 WebSocket 请求,进一步增强其作为反向代理的能力。
  • 缓存服务:NGINX 可以配置为缓存服务器,将来自后端服务器的响应内容缓存下来,用于加速后续的相同请求。这种缓存机制能够显著减少后端服务器的负载,提升页面加载速度,并优化用户体验。NGINX 的缓存策略灵活,可以根据需求进行精细化的缓存控制。

2、Nginx的架构

解释:

1)首先,每个 worker 进程都是从 master 进程 fork 过来,在 master 进程里面,先建立好需要 listen **socketlistenfd**之后,然后再 fork 出多个 worker 进程。

2)所有 worker 进程的 listenfd 会在新连接到来时变得可读,为保证只有一个进程处理该连接,所有 worker 进程会在注册 listenfd 读事件前抢 accept_mutex,抢到互斥锁的那个进程注册 listenfd 读事件,然后在读事件里调用 accept 接受该连接。(解决惊群)

3)当一个 worker 进程在 accept 这个连接之后,就开始读取请求、解析请求、处理请求。产生数据 后,再返回给客户端,最后才断开连接,这样一个完整的请求就是这样的了。

3、Nginx 进程结构

web请求处理机制
  • 多进程方式:服务器每接收到一个客户端请求就有服务器的主进程生成一个子进程响应客户端,直 到用户关闭连接,这样的优势是处理速度快,子进程之间相互独立,但是如果访问过大会导致服务 器资源耗尽而无法提供请求。
  • 多线程方式:与多进程方式类似,但是每收到一个客户端请求会有服务进程派生出一个线程来个客 户方进行交互,一个线程的开销远远小于一个进程,因此多线程方式在很大程度减轻了web服务器 对系统资源的要求,但是多线程也有自己的缺点,即当多个线程位于同一个进程内工作的时候,可 以相互访问同样的内存地址空间,所以他们相互影响,一旦主进程挂掉则所有子线程都不能工作 了,IIS服务器使用了多线程的方式,需要间隔一段时间就重启一次才能稳定。

工作进程(Worker Process)的功能整理如下

①、Worker 进程的平等性

  • 所有 Worker 进程都是平等的,独立处理请求。

②、处理网络请求

  • Worker 进程负责实际处理客户端的网络请求。

③、Worker 进程数量配置

  • Worker 进程的数量通常设置为 CPU 核心数,以充分利用 CPU 资源,避免因进程过多导致的 CPU 资源竞争和上下文切换损耗。

④、请求处理流程

  • 接受客户请求并依次将其送入各个功能模块进行处理。
  • 进行 I/O 调用,获取响应数据。
  • 与后端服务器通信,接收并处理后端服务器的响应结果。
  • 访问缓存,查询和调用缓存数据。
  • 发送处理结果,响应客户请求。

⑤、接收主进程指令

  • 执行主进程发出的指令,如重启、升级和退出等操作。

4、Nginx 模块

  • 核心模块:是 Nginx 服务器正常运行必不可少的模块,提供错误日志记录 、配置文件解析 、事件 驱动机制 、进程管理等核心功能
  • 标准HTTP模块:提供 HTTP 协议解析相关的功能,比如: 端口配置 、 网页编码设置 、 HTTP响应 头设置 等等
  • 可选HTTP模块:主要用于扩展标准的 HTTP 功能,让 Nginx 能处理一些特殊的服务,比如:Flash 多媒体传输 、解析 GeoIP 请求、 网络传输压缩 、 安全协议 SSL 支持等
  • 邮件服务模块:主要用于支持 Nginx 的 邮件服务 ,包括对 POP3 协议、 IMAP 协议和 SMTP协议 的支持
  • Stream服务模块: 实现反向代理功能,包括TCP协议代理 四层
  • 第三方模块:是为了扩展 Nginx 服务器应用,完成开发者自定义功能,比如: Json 支持、 Lua 持等

核心模块: core module
标准模块:
HTTP 模块: ngx_http_*
HTTP Core modules # 默认功能
HTTP Optional modules # 需编译时指定
Mail 模块 : ngx_mail_*
Stream 模块 ngx_stream_*
第三方模块
常用模块:
ngx_http_core_module 核心模块
ngx_http_access_module 访问控制
ngx_http_auth_basic_module 身份验证
ngx_http_gzip_module 压缩模块
ngx_http_log_module 日志模块
ngx_http_proxy_module 代理模块
ngx_http_rewrite_module 重写模块
ngx_http_stub_status_module 状态页模块
ngx_http_upstream_module 反向代理
ngx_http_stream_module 四层代理

5、Nginx 相对于 Apache 的优缺点

①、Nginx 相对于 Apache 的优点

轻量级

  • NGINX 是一个轻量级的 Web 服务器,相比 Apache 占用更少的内存和系统资源,特别适合资源有限的环境。

高并发性能

  • NGINX 采用异步非阻塞的架构,能够高效处理大量并发请求。在高并发场景下,NGINX 能保持低资源消耗和高性能,而 Apache 是基于进程或线程的阻塞型模型,资源消耗较高。

高度模块化设计

  • NGINX 具有高度模块化的设计,开发和编写模块相对简单,这使得它可以灵活地扩展和定制。

活跃的社区

  • NGINX 社区非常活跃,各种高性能模块更新迅速,提供了丰富的第三方模块和插件以增强其功能。

②、Apache 相对于Nginx的优点

Rewrite 规则

  • Apache 的 rewrite 功能比 NGINX 更强大,能够处理更复杂的 URL 重写和请求路由需求。

丰富的模块支持

  • Apache 拥有大量的官方和第三方模块,几乎可以找到满足任何需求的模块,功能覆盖面非常广。

稳定性

  • Apache 已经经过多年发展和广泛应用,因而其代码库非常稳定,bug 相对较少,适合对稳定性要求极高的场景。

处理动态请求

  • Apache 在处理动态请求方面表现更好,通常与 PHP 等动态内容生成器结合使用。而 NGINX 在处理动态请求方面相对较弱,更适合作为反向代理和静态内容服务器。

二、编译安装Nginx 服务

1、yum部署

1.1、yum安装Nginx

①、使用yum 部署 Nginx 需要先安装 epel-release 扩展包,官方源默认没有 Nginx yum源。
yum install epel-release -y     //安装epel-release
②、扩展源安装完后直接安装 Nginx
yum install nginx -y    //安装nginx

1.2、yum安装的nginx的配置文件

配置项 默认路径
配置文件 /etc/nginx/nginx.conf
默认根目录 /usr/share/nginx/html
默认日志文件目录 /var/log/nginx/

2、Nginx编译安装

最好使用编译安装nginx,因为yum安装的nginx模块较少,而编译安装可以添加特定的模块

2.1、下载安装包

首先需要关闭防火墙和临时防护

[root@localhost opt]# systemctl stop firewalld.service    //关闭防火墙
[root@localhost opt]# 
[root@localhost opt]# setenforce 0                       //关闭临时防护

下载安装包:

在这里可以想下载你的安装包 https://nginx.org/download/nginx-1.22.0.tar.gz 
或者
进入官网 nginx: download点击右边的download选择一个安装包进行下载

[root@localhost /]# cd /opt/        //切换到opt目录下
[root@localhost opt]# 
[root@localhost opt]# wget https://nginx.org/download/nginx-1.18.0.tar.gz   //下载安装包

2.2、安装依赖包且创建用户与组

nginx的配置及运行需要pcrezlib等软件包的支持,因此需要安装这些软件的开发包,以便提供相应的库 和头文件。
yum -y install pcre-devel zlib-devel gcc gcc-c++ make  
[root@localhost opt]# tar zxvf nginx-1.22.0.tar.gz    //解压安装包
[root@localhost opt]# cd nginx-1.22.0/     //切换到nginx目录下
[root@localhost nginx-1.22.0]# 
[root@localhost nginx-1.22.0]# yum -y install pcre-devel zlib-devel gcc gcc-c++ make //安装
创建运行用户、组(Nginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)

[root@localhost nginx-1.22.0]# useradd -M -s /sbin/nologin nginx   //创建用户
[root@localhost nginx-1.22.0]# 
[root@localhost nginx-1.22.0]# tail -2 /etc/passwd        //查看用户是否创建成功
mysql:x:1001:1001::/home/mysql:/sbin/nologin
nginx:x:1002:1002::/home/nginx:/sbin/nologin          //创建成功
[root@localhost nginx-1.22.0]# 
[root@localhost nginx-1.22.0]# 

2.3、编译安装Nginx

①、

编译安装基础的 Nginx 服务器


[root@localhost nginx-1.22.0]# ./configure \
--prefix=/usr/local/nginx \                  //指定nginx的安装路径
--user=nginx \                                //指定用户名
--group=nginx \                               //指定组名
--with-http_stub_status_module              //启用http_stub_status_module模块

编译安装功能全面的 Nginx 服务器

./configure --prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module
[root@localhost nginx-1.22.0]# make && make install

②、修改属组

[root@localhost opt]# chown -R nginx.nginx /usr/local/nginx/

③、创建软连接,让系统识别nginx的操作命令

[root@localhost opt]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@localhost opt]#
[root@localhost opt]# nginx -t    //查看文件是否配置正确
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost opt]# 

2.4、添加 Nginx 系统服务

[root@localhost nginx-1.22.0]# vim /lib/systemd/system/nginx.service

[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill-sHUP$MAINPID
ExecStop=/bin/kill-sQUIT$MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

解释:

  • [Unit]:服务的说明
  • Description:描述服务
  • After:依赖,当依赖的服务启动之后再启动自定义的服务
  • [Service]服务运行参数的设置
  • Type=forking是后台运行的形式,使用此启动类型应同时指定
  • PIDFile以便systemd能够跟踪服务的主进程。

①、修改权限

[root@localhost nginx-1.22.0]# chmod 754 /lib/systemd/system/nginx.service 

②、开启Nginx

[root@localhost nginx]# systemctl daemon-reload      //重新加载设置
[root@localhost nginx]# 
[root@localhost nginx]# systemctl enable nginx.service    //设置开机自启
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
[root@localhost nginx]# systemctl start nginx    //开启nginx

三、Nginx的主配置文件nginx.conf

1、全局配置

①、运行用户:user nobody;:指定Nginx服务的运行用户,默认是 nobody。如果需要指定其他用户,可以在此处修改。

②、工作进程:worker_processes 4;:配置工作进程的数量,通常设置为服务器核心数的2倍。对于低访问量的网站,设置为1可能已经足够。

示例:   CPU配置

  • 2P:2个物理CPU。
  • 4C:每个物理CPU有4个核心,因此总共有2 * 4 = 8个逻辑核心。
  • 内存配置: 8GB。
  • 存储配置: 4C 16G 高效盘 40GB(系统盘)、存储OSS、网络存储NAS 50MB。

③、错误日志:error_log logs/error.log;:指定错误日志文件的位置。默认情况下,这一项是被注释掉的,可以根据需要启用并指定路径。

④、PID文件:#pid logs/nginx.pid;:指定PID文件的位置。PID文件用于存储Nginx进程的ID,以便管理和控制服务。默认是被注释掉的,可以根据需要启用并指定路径。

2、I/O 事件配置

events {
    use epoll;                # 使用 epoll 模型,在Linux 2.6及以上内核版本上推荐使用
    worker_connections 4096;  # 每个进程处理 4096 个连接
}

详解:

use epoll

  • epoll 是Linux内核中高效的I/O事件通知机制,特别适用于处理大量并发连接的场景。
  • 相比 selectpollepoll 能显著减少CPU资源的消耗,特别是在大量连接中只有少量活跃的情况下。

worker_connections 4096

  • 指定每个Nginx工作进程可以处理的最大并发连接数为4096。
  • 在高并发场景下,这个参数非常关键,因为它直接影响Nginx的处理能力。

高并发优化

修改系统最大文件描述符数量

  • 在高并发TCP连接处理时,Nginx的并发连接数受系统对单一进程可打开文件数量的限制。每个TCP连接都对应一个文件句柄。
  • 要提高每个进程的连接数,可以执行以下命令临时修改本地每个进程可以同时打开的最大文件数:
ulimit -n 65535

要永久修改文件数限制,可以编辑 /etc/security/limits.conf 文件。

epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版 本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。

若工作进程数为 8,每个进程处理 4 096 个连接,则允许 Nginx 正常提供服务的连接数 已超过 3 万个(4 096×8=32 768),当然具体还要看服务器硬件、网络带宽等物理条件的性 能表现

3、HTTP配置

使用“http { }”界定标记,包括访问日志、HTTP 端口、网页目录、默认字符集、连接保 持,以及后面要讲到的虚拟 Web 主机、PHP 解析等一系列设置,其中大部分配置语句都包 含在子界定标记“server { }”内。

http {
    ## 文件扩展名与文件类型映射表
    include mime.types;
    
    ## 默认文件类型
    default_type application/octet-stream;

    ## 日志格式设定(示例已被注释)
    # log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    #                     '$status $body_bytes_sent "$http_referer" '
    #                     '"$http_user_agent" "$http_x_forwarded_for"';
    
    ## 访问日志位置(示例已被注释)
    # access_log logs/access.log main;

    ## 支持文件发送(下载)
    sendfile on;

    ## 连接保持超时时间,单位是秒
    keepalive_timeout 65;

    ## Web 服务的监听配置
    server {
        ## 监听地址及端口
        listen 80;

        ## 站点域名,可以有多个,用空格隔开
        server_name www.kgc.com;

        ## 网页的默认字符集
        charset utf-8;

        ## 根目录配置
        location / {
            ## 网站根目录的位置
            root html;

            ## 默认首页文件名
            index index.html index.php;
        }

        ## 内部错误的反馈页面
        error_page 500 502 503 504 /50x.html;

        ## 错误页面配置
        location = /50x.html {
            root html;
        }
    }
}

日志格式设定

# log_format main '$remote_addr - $remote_user [$time_local] "$request" '
#                     '$status $body_bytes_sent "$http_referer" '
#                     '"$http_user_agent" "$http_x_forwarded_for"';
# access_log logs/access.log main;

解释

  • $remote_addr$http_x_forwarded_for: 记录客户端的IP地址。当Nginx在反向代理服务器后面时,通过 $http_x_forwarded_for 获取原始客户端的IP地址。
  • $remote_user: 记录客户端的用户名(通常通过HTTP身份验证获得)。
  • $time_local: 记录请求的访问时间和时区。
  • $request: 记录请求的URL和HTTP协议。
  • $status: 记录HTTP响应状态码(例如:200表示请求成功)。
  • $body_bytes_sent: 记录发送给客户端的文件主体内容大小。
  • $http_referer: 记录从哪个页面链接跳转过来的。
  • $http_user_agent: 记录客户端浏览器和操作系统的信息。

四、实战案例

1、Nginx的访问状态统计

1.1、检查模块

检查 Nginx 是否包含 HTTP_STUB_STATUS 模块

/usr/local/nginx/sbin/nginx -V

查看已安装模块

cat /opt/nginx-1.12.0/auto/options | grep YES

1.2、修改 nginx.conf 配置文件

备份配置文件

cd /usr/local/nginx/conf
cp nginx.conf nginx.conf.bak

编辑配置文件

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

http 配置块中添加或修改以下内容

http {
    ...
    server {
        listen 80;
        server_name www.kgc.com;
        charset utf-8;
        
        location / {
            root html;
            index index.html index.php;
        }

          //添加 stub_status 配置//

        location /status {       //访问位置为 /status
            stub_status on;      //打开状态统计功能
            access_log off;       //关闭此位置的日志记录
        }
    }
}

1.3、重启服务并测试

重启 Nginx 服务

systemctl restart nginx

测试

浏览器访问 http://172.16.88.22/status

  • Active connections :表示当前的活动连接数;
  • server accepts handled requests :表示已经处理的连接信息,三个数字依次表示已处理的连接数、 成功的TCP握手次数、 已处理的请求数。

使用 curl 命令结合 awkif 语句进行性能监控

curl -s http://172.16.88.22/status

2、基于授权的访问控制

2.1、生成用户密码认证文件

安装 httpd-tools

yum install -y httpd-tools

创建用户密码文件并添加用户 zhangsan

htpasswd -c /usr/local/nginx/passwd.db zmx

修改文件所有者和权限

chown nginx /usr/local/nginx/passwd.db
chmod 400 /usr/local/nginx/passwd.db

2.2、修改 Nginx 主配置文件,添加认证配置项

编辑 nginx.conf 文件

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

在相应的 location 块中添加认证配置

server {
    location / {
        ...
         //添加认证配置// 
        auth_basic "secret";                                 //设置密码提示框的文字信息
        auth_basic_user_file /usr/local/nginx/passwd.db;     //指定密码文件位置
    }
}

2.3、重启服务并进行测试

nginx -t
systemctl restart nginx
浏览器访问 http://172.16.88.22

3、基于客户端的访问控制

3.1、编辑 Nginx 主配置文件,添加访问控制规则

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

server {
    location / {
        ...

         //添加控制规则//

        allow 172.16.88.22;      //允许访问的客户端 IP
        deny all;                //拒绝其它 IP 客户端访问
    }
}

访问控制规则说明

  • allow 172.16.88.22;:允许来自 IP 172.16.88.22 的客户端访问。
  • deny all;:拒绝所有其他 IP 客户端访问。
  • 规则是从上往下执行,一旦匹配到规则就停止匹配。

3.2、重启服务应用配置

nginx -t

systemctl restart nginx

4、基于IP Nginx 虚拟主机

4.1、配置网卡

使用 ifconfig 命令配置网卡别名 ens33:0 并分配 IP 地址 172.16.88.33

ifconfig ens33:0 172.16.88.33 netmask 255.255.255.0

4.2、编辑Nginx配置文件,设置多个监听地址

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

http {
    ...
    server {
        listen 172.16.88.22:80;     //设置监听地址172.16.88.22
        server_name www.kgc.com;
        charset utf-8;
        access_log logs/www.kgc.access.log;

        location / {
            root /var/www/html/kgc;
            index index.html index.php;
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }
    }

    server {
        listen 172.16.88.33:80;     //设置监听地址172.16.88.33
        server_name www.benet.com;
        charset utf-8;
        access_log logs/www.benet.access.log;

        location / {
            root /var/www/html/benet;
            index index.html index.php;
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }
    }
}

4.3、重启Nginx服务并测试

nginx -t
systemctl restart nginx

在浏览器中分别访问以下两个地址进行测试:

  • http://172.16.88.22
  • http://172.16.88.33

5、基于端口的 Nginx 虚拟主机

5.1、编辑Nginx配置文件

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

http {
    ...
    server {
        listen 172.16.88.22:8080;    //设置监听 8080 端口
        server_name www.kgc.com;
        charset utf-8;
        access_log logs/www.kgc.access.log;

        location / {
            root /var/www/html/kgc;
            index index.html index.php;
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }
    }

    server {
        listen 172.16.88.33:8888;    //设置监听 8888 端口
        server_name www.benet.com;
        charset utf-8;
        access_log logs/www.benet.access.log;

        location / {
            root /var/www/html/benet;
            index index.html index.php;
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }
    }
}

5.2、重启Nginx服务并测试

nginx -t
systemctl restart nginx

在浏览器中访问以下地址进行测试:

  • 访问 http://172.16.88.22:8080,应展示www.kgc.com的内容。
  • 访问 http://172.16.88.33:8888,应展示www.benet.com的内容。

五、升级Nginx(18——>22)

当前Nginx版本为18

1、下载22版本安装包、解压

[root@localhost opt]# rz -E
rz waiting to receive.
[root@localhost opt]# tar zxf nginx-1.22.0.tar.gz    //解压安装包
[root@localhost opt]# 
[root@localhost opt]# ls
apr-1.6.2.tar.gz       Discuz_X3.4_SC_UTF8.zip  mysql-5.7.17         nginx-1.18.0.tar.gz  php-7.1.24.tar.gz
apr-util-1.6.0.tar.gz  httpd-2.4.29             mysql-5.7.17.tar.gz  nginx-1.22.0         rh
boost_1_59_0.tar.gz    httpd-2.4.29.tar.bz2     nginx-1.18.0         nginx-1.22.0.tar.gz
[root@localhost opt]# 
[root@localhost opt]# cd nginx-1.22.0/       //切花到该目录下
[root@localhost nginx-1.22.0]# 

2、安装模块、并进行编译

[root@localhost nginx-1.22.0]# 
[root@localhost nginx-1.22.0]# ./configure \
> --prefix=/usr/local/nginx/ \
> --user=nginx \
> --group=nginx \
> --with-http_stub_status_module \
> --with-http_ssl_module

make编译

3、备份18版本Nginx,更换22版本Nginx文件

[root@localhost nginx-1.22.0]# mv /usr/local/nginx/sbin/nginx     //备份
/usr/local/nginx/sbin/nginx_01
[root@localhost nginx-1.22.0]#      
[root@localhost nginx-1.22.0]# cp objs/nginx /usr/local/nginx/sbin/nginx   //替换新文件
[root@localhost nginx-1.22.0]# 

4、重启服务,查看版本

[root@localhost nginx-1.22.0]# systemctl restart nginx.service 
[root@localhost nginx-1.22.0]# 
[root@localhost nginx-1.22.0]# 
[root@localhost nginx-1.22.0]# nginx -v
nginx version: nginx/1.22.0
[root@localhost nginx-1.22.0]# 

版本更新为22


网站公告

今日签到

点亮在社区的每一天
去签到