Nginx 入门(超级详细)

本文详细介绍了 Nginx 的基本概念,包括 Nginx 的作用、反向代理、负载均衡和动静分离。接着,讲解了 Nginx 在 Linux 系统中的安装、常用命令和配置文件详解,包括配置文件的位置、结构和主要配置项。此外,还提供了 Nginx 配置实例,涵盖了反向代理、负载均衡和动静分离的配置。最后,探讨了如何通过 Keepalived 实现 Nginx 高可用集群,确保服务的稳定性和连续性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


tags:

  • Nginx
  • Keepalived
  • 快速使用
  • 框架整合
  • 反向代理服务器
  • 环境搭建
  • 后台资料

Ⅰ Nginx 基本概念


一、Nginx 是什么?


  • Nginx 是一个高性能的 HTTP 和反向代理服务器,特点是占有内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中表现较好。
  • Nginx 转为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能承受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。

Nginx 作为 HTTP 服务器,有以下几项基本特性:

  • 处理静态文件,索引文件以及自动索引;打开文件描述符缓冲。
  • 无缓存的反向代理加速,简单的负载均衡和容错。
  • FastCGI,简单的负载均衡和容错。
  • 模块化的结构。包括 gzipping,byte ranges,chunked responses,以及 SSI-filter 等 filter。如果由 FastCGI 或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行运行,而不需要互相等待。
  • 支持 SSL 和 TLSSNI。

Nginx 特点:

  • Nginx 专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率。它支持内核 Poll 模型,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。
  • Nginx 具有很高的稳定性,其它 HTTP 服务器,当遇到访问的峰值,或有人恶意发起慢速连接时,也很有可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器。例如当前 apache 一旦遇到 200 个以上进程,web 响应速度就明显非常缓慢了。而 Nginx 采用了分阶段资源分配技术,使得它的 CPU 与内存占用率非常低。Nginx 官方表示保持 10,000 个没有活动的连接,他只占用 2.5M 内存,所以类似 DOS 这样的攻击对 Nginx 来说基本上是毫无用处的。就稳定性而言,Nginx 比 Lighthttpd 更胜一筹。
  • Nginx 支持热部署,他的启动特别容易,并且几乎可以做到 7*24 不间断运行,及试运行数个月也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行升级。
  • Nginx 采用 master-slave 模型,能够充分利用 SMP 的优势,且能够减少工作进程在磁盘 I/O 的阻塞延迟。当采用 select() / poll() 调用时,还可以限制每个进程的连接数。
  • Nginx 代码质量非常高,代码很规范,手法成熟,模块扩展也很容易。特别值得一提的是强大的 Upstream 与 Filter 链。Upstream 为诸如 reverse proxy,与其他服务器通信模块的编写奠定了很好的基础。而 Filter 链最酷的部分就是各个 filter 不必等待其一个 filter 执行完毕。它可以把前一个 filter 的输出作为当前 filter 的输入,这有点像 Unix 的管线。这意味着,一个模块可以开始压缩从后端服务器发送过来的请求,且可以在模块接收完后端服务器的整个请求之前把压缩流转向客户端。
  • Nginx 采用了一些 OS 提供的最新特性,如对 sendfile(Linux2.2+),accept-filter(FreeBSD4.1+),TCP_DEFER_ACCEPT(Linux2.4+)的支持,从而大大提高了性能。

二、 什么是反向代理?


  1. 正向代理

    用户知道目标服务器地址,但由于网络限制等原因,无法直接访问。这是需要先连接代理服务器,然后再由代理服务器访问目标服务器。

    直接暴露服务器 IP 让客户端进行访问。

  2. 反向代理

    反向代理对用户则是不可知的,代理服务器给我们转发请求到他们 N 多的服务器节点中的一个给我们进行搜索后将结果返回

    隐藏服务器 IP ,暴露代理服务器 IP 让客户端访问。

三、什么是负载均衡?


  • 单个服务器解决不了,增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡。

四、什么是动静分离?


  • 为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。

Ⅱ Nginx 安装、常用命令和配置文件


一、 Liunx 系统中安装 Nginx


1 安装 Nginx 所需依赖
  • 使用yum 命令一键安装 Nginx 所需依赖

    • pcre
    • openssl
    • zlib
    yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
    
  • 检查安装所需依赖

    pcre-config --version
    
2 安装 Nginx
  • 使用 yum 命令一键安装 Nginx

    yum -y install nginx
    
  • 安装后检查安装是否无误

    whereis nginx
    
  • 运行 nginx

    cd /usr/sbin/
    
    ./nginx
    
  • 查看是否存在 nginx 线程

    ps -ef | grep nginx
    
  • CentOS 防火墙开启 80 端口

    firewall-cmd --permanent --add-port=80/tcp
    
    firewall-cmd --reload
    
  • 根据 ip 访问 80 端口结果为下图所示;则为安装成功

二、Nginx 常用命令


TIP:

使用 nginx 操作命令必须进入 nginx 的目录!

cd /etc/nginx/sbin/
查看 nginx 版本号
./nginx -v
启动 nginx
./nginx
关闭 nginx
./nginx -s stop
重新加载 nginx
./nginx -s reload
卸载 nginx
  • 先停止 nginx

    service nginx stop
    
  • 关闭自启动

    chkconfig nginx off
    
  • 查看相关文件

    whereis nginx
    
  • 删除相关文件

    rm -rf xxxxx
    
  • 卸载

    yum remove nginx
    
  • 检查是否还有残留,有的话执行步骤3继续删除

    whereis nginx
    
常见错误
  • 错误

    nginx: [error] open() "/run/nginx.pid" failed (2: No such file or directory)
    
  • 解决方案

    在你的 nginx.conf 所在文件夹下输入

    nginx -c /etc/nginx/nginx.conf
    

    如果输入后出现

    [root@192 nginx]# nginx -c /etc/nginx/nginx.conf
    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    nginx: [emerg] still could not bind()
    
    • 根据 nginx 配置文件查看配置的端口(这里使用80),然后根据端口查看端口占用情况

      netstat -ntlp|grep 80
      
      [root@192 nginx]# netstat -ntlp|grep 80
      tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      14458/nginx: master
      
    • 使用 kill 命令杀死占用进程

      kill 14458
      
    • 或者使用 pkill 指

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值