• 一、Nginx 名词解释

    • 1.1 什么是Nginx?

    • 1.2 正向代理

    • 1.3 反向代理

    • 1.4 负载均衡

      • 1.5 动静分离

    • 二、Nginx安装

      • 2.1 下载Nginx

      • 2.2 安装Nginx相关依赖

      • 2.3 下载并解压安装包

      • 2.4 编译并安装Nginx

      • 2.5 查看安装目录内容

      • 2.6 启动Nginx

      • 2.7 放行Nginx端口号

      • 2.8 访问Nginx

    • 三、Nginx常用命令和配置文件

      • 3.1 常用命令

        • 3.2 配置文件

        一、Nginx 名词解释

        1.1 什么是Nginx?

        •  Nginx 是一个高性能的HTTP和反向代理服务端,特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现优异。

        •  Nginx 专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,有报告表明能支持高达50000个并发连接数。

        1.2 正向代理

        •  如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,需要通过代理服务器访问。

        •  在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问。

        •  核心作用:帮助客户端访问无法直接访问的资源(如突破网络限制)、隐藏客户端真实 IP

        •  典型场景:翻墙工具、企业内网代理、校园网代理

        图片

        1.3 反向代理

        客户端对代理是无感知的,因为客户端不需要任何配置就可以访问。我们只需要将请求发送到反向代理服务器,由反向代理服务器选择目标服务器获取数据后,再返回给客户端。此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器的IP地址。
        核心作用:负载均衡、隐藏服务端真实 IP、缓存静态资源、SSL 终端
        典型场景:Nginx 负载均衡、CDN 加速、API 网关

        图片

        1.4 负载均衡

        1.4.1 场景介绍

        •  客户端发送多个请求到服务器,服务器处理请求,部分请求可能需要与数据库交互,处理完毕后将结果返回给客户端。

        •  这种架构模式适用于早期系统单一、并发请求较少的场景,成本较低。但随着信息数量增长、访问量和数据量飞速提升、业务复杂度增加,会导致服务器响应缓慢,高并发时甚至直接崩溃,核心原因是服务器性能瓶颈。

        •  升级服务器配置(如提高CPU频率、加大内存)的纵向扩展方式,受摩尔定律失效影响,无法满足日益增长的需求。例如天猫双十一热销商品瞬时访问量极大,即使配置顶级硬件也无法支撑。

        1.4.2 解决方案

        纵向扩展不可行时,采用横向扩展方式:增加服务器数量,构建集群,将请求分发到各个服务器上,分散负载压力,这就是负载均衡。

        图片

        1.5 动静分离

        为了加快网站的解析速度,将动态页面和静态页面交由不同的服务器解析,降低单个服务器的压力,从而提升整体访问速度。

        图片

        二、Nginx安装

        2.1 下载Nginx

        •  官网:http://nginx.org/

        •  下载地址:http://nginx.org/en/download.html

        2.2 安装Nginx相关依赖

        # 一键安装四个依赖环境
        yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

        2.3 下载并解压安装包

        # 创建文件夹
        cd /opt/module
        # 创建nginx解压安装目录
        mkdir nginx
        # 下载tar包
        wget http://nginx.org/download/nginx-1.13.7.tar.gz
        # 解压
        tar -xvf nginx-1.13.7.tar.gz

        2.4 编译并安装Nginx

        # 进入解压后的目录
        cd nginx-1.13.7/
        # 指定安装目录(不指定则默认在 /usr/local/nginx)
        ./configure --prefix=/opt/module/nginx
        # 编译
        make
        # 安装
        make install

        2.5 查看安装目录内容

        # 进入安装目录
        cd /opt/module/nginx
        # 查看目录详情
        ll

        2.6 启动Nginx

        sbin/nginx          # 启动Nginx
        sbin/nginx -s stop  # 关闭Nginx
        sbin/nginx -s reload # 重新加载Nginx配置

        2.7 放行Nginx端口号

        # 放行80端口(永久生效)
        firewall-cmd --add-port=80/tcp --zone=public --permanent
        # 重启防火墙
        systemctl restart firewalld
        # 查看放行的端口号
        firewall-cmd --list-port

        2.8 访问Nginx

        http://服务器IP地址:80

        三、Nginx常用命令和配置文件

        3.1 常用命令

        3.1.1 服务控制命令(启动/停止/重启)

        sbin/nginx -v       # 查看版本号
        sbin/nginx          # 启动Nginx
        sbin/nginx -s stop  # 关闭Nginx
        sbin/nginx -s reload # 重新加载配置
        sbin/nginx -t #同时验证配置语法正确性,并显示当前加载的主配置文件路径 
        sbin/nginx -T
        sbin/nginx -v  # 简洁版本信息
        sbin/nginx -V  # 详细版本+编译参数(含默认配置路径、加载模块)

        3.1.2 日志排查

        # 1. 实时查看访问日志(实时监控用户请求)
        tail -f /var/log/nginx/access.log
        
        # 2. 实时查看错误日志(排查服务启动、请求报错)
        tail -f /var/log/nginx/error.log
        
        # 3. 查看日志最后100行(快速定位近期问题)
        tail -n 100 /var/log/nginx/error.log
        
        # 4. 过滤日志中的关键字(如某个IP、URL的请求)
        grep "192.168.1.1" /var/log/nginx/access.log  # 过滤指定IP
        grep "/api/login" /var/log/nginx/access.log   # 过滤指定接口

        3.1.3 进程端口排查命令

        # 1. 查看 Nginx 运行进程(确认进程是否存在)
        ps -ef | grep nginx | grep -v grep
        
        # 2. 查看 Nginx 监听端口(默认80/443端口)
        netstat -tlnp | grep nginx  # 查看监听端口及进程
        ss -tlnp | grep nginx       # 兼容新版Linux系统
        
        # 3. 排查端口占用(如80端口被其他程序占用)
        lsof -i :80  # 查看80端口占用进程

        3.2 配置文件

        3.2.1 配置文件位置

        安装目录下的 conf 文件夹中(如 /opt/module/nginx/conf/nginx.conf)

        3.2.2 配置文件组成部分

        1.  全局块:从配置文件开始到 events 块之间的内容,设置影响Nginx整体运行的配置指令。例如 worker_processes 1,该值越大,支持的并发处理量越多。

        2.  events块:涉及影响Nginx与用户网络连接的指令,例如 worker_connections 1024,用于设置最大连接数。

        3.  http块:Nginx配置中最常用的部分,包含http全局块和server块。

        3.2.3 location指令说明

        3.2.3.1 匹配规则类型
        •  匹配URL类型:location [ = | ~ | ~* | ^~ ] uri { … }(可选参数,也可不带参数)

        •  命名location:用@标识,类似goto语句块:location @name { … }

        3.2.3.2 匹配参数解释
        •  =:精确匹配,内容需与表达式完全一致

        location = /abc/ {
          .....
        }                                
        # 只匹配http://abc.com/abc
        #http://abc.com/abc [匹配成功]
        #http://abc.com/abc/index [匹配失败]
        •  ~:正则匹配,区分大小写

        location ~ /Abc/ {
          .....
        }
        #http://abc.com/Abc/ [匹配成功]
        #http://abc.com/abc/ [匹配失败]
        •  ~*:正则匹配,忽略大小写

          location ~* /Abc/ {
          .....
        }
        #则会忽略 uri 部分的大小写
        #http://abc.com/Abc/ [匹配成功]
        #http://abc.com/abc/ [匹配成功]
        •  ^~:普通字符串匹配成功后,不再进行正则匹配

        location ^~ /index/ {
          .....
        }
        #以 /index/ 开头的请求,都会匹配上
        #http://abc.com/index/index.page  [匹配成功]
        #http://abc.com/error/error.page [匹配失败]
        •  无规则:默认大小写敏感、前缀匹配,等效于“”与“^”结合

        location /index/ { 
          ...... 
        } 
        #http://abc.com/index [匹配成功] 
        #http://abc.com/index/index.page [匹配成功] 
        #http://abc.com/test/index [匹配失败] 
        #http://abc.com/Index [匹配失败]
        •  @:Nginx内部跳转

          location /index/ { 
          error_page 404 @index_error; 
        } 
        location @index_error { 
          ..... 
        } 
        #以/index/开头的请求若返回404,将匹配@index_error规则
        3.2.3.3 匹配顺序

        =>^` > `|~*> 最长前缀匹配 >/

        3.2.3.4 URI结尾是否带/
        •  若URI为 https://domain.com/,尾部有无/均不重定向(浏览器默认添加/)。

        •  若URI为 https://domain.com/some-dir/,尾部缺少/会导致重定向:URL尾部/表示目录,无/表示文件;访问/some-dir时,服务器先找some-dir文件,找不到则将其当作目录,重定向到/some-dir/。

        3.2.3.5 root、proxy_pass和alias
        •  root:指定文件系统目录作为请求根目录,Nginx在该目录下寻找请求文件。

        •  alias:将请求映射到其他目录/文件,用于静态资源路径映射,功能类似root但可指定不同路径。

        •  proxy_pass:配置反向代理,将请求转发到后端服务器,并返回后端响应。

        3.2.3.6 autoindex on

        开启后将列出文件夹内容。

        Logo

        汇聚全球AI编程工具,助力开发者即刻编程。

        更多推荐