Nginx的配置与优化

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、Nginx简介
    • 1-1概述
    • 1-2 Nginx和Apache的优缺点比较
    • 1-3 Nginx作为web服务器与Apache比较
    • 1-4 Nginx配置简洁, Apache较复杂
    • 1-5 Nginx和Apache最核心的区别
  • 二.Linux中的I/O
  • 三、 Nginx的编译安装步骤详解
    • 3-1关闭防火墙,安装依赖关系包
  • 3-2 新建用户 和组便于管理
    • 3-3 将压缩包传入到/opt目录下 ,编译安装
    • 3-4做软连接并启动nginx
    • 3-5 停止nginx
    • 3-6 添加nginx系统服务
    • 3-7 查看nginx版本信息
  • 四、Nginx配置文件
    • 4-1 Nginx服务的主配置文件
    • 4-2 全局配置
    • 4-3 I/O 事件配置
    • 4-3 http配置
    • 4-4 访问状态统计配置
    • 4-5 基于授权密码的访问控制
    • 4-6 基于客户端的访问控制
    • 4-7 基于域名的nginx 虚拟主机
    • 4-8 基于IP地址
    • 4-9 基于端口


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、Nginx简介

1-1概述

Nginx
Nginx是一个高性能的HTTP和反向代理服务器。
是一款轻量级的高性能的web服务器/反向代理服务器/电子邮件(IMAP/POP3)代理服务器
单台物理服务器可支持30 000~50 000个并发请求。

Apache:
Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适用于多处理器环境,因此,在一个apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。

1-2 Nginx和Apache的优缺点比较

nginx相对于apache的优点∶
轻量级,同样起web服务,比apache占用更少的内存及资源
抗并发,nginx处理请求是异步非阻塞的,而apache是阻塞型的在高并发下,nginx能保持低资源低消耗高性能
高度模块化的设计,编写模块相对简

apache相对于nginx的优点∶
Rewrite比nginx的rewrite强大 (rewrite的主要功能就是实现统一资源定位符URL的跳转)
模块多,基本想到的都可以找到
少bug, nginx的bug相对较多
超稳定

存在的理由:一般来说,需要性能的web服务,用nginx。若不需要性能只求稳定,就选用apache。

1-3 Nginx作为web服务器与Apache比较

相比apache,nginx使用更少的资源,支持更多的并发连接,体现更高的效率。

Nginx作为负载均衡服务器:nginx既可以在内部直接支持rails和php程序对外进行服务,也可以支持http代理服务器对外进行服务。
Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比较好。
作为邮件代理服务器:最早开发这个产品的目的之一也是作为邮件代理服务器。

1-4 Nginx配置简洁, Apache较复杂

1-5 Nginx和Apache最核心的区别

Apache是同步多进程模型,一个连接对应一个进程,Nginx是异步的,多个连接可以对应一个进程。
Nginx处理静态文件好,耗费内存少,只适合静态和反向。
Apache在处理动态有优势,
Mginx并发性比较好,CPU占用内存低,如果rewrite频繁,选用Apache最佳。

总的来说,Apache依然是大部分公司的首选。

二.Linux中的I/O

I/O在计算机中指Input/Output,lOPS (Input/Output Per Second)即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的IO请求数量为单位,I/O请求通常为读或写数据操作请求。

一次完整的I/O是用户空间的进程数据与内核空间的内核数据的报文的完整交换,但是由于内核空间与用户空间是严格隔离的,所以其数据交换过程中不能由用户空间的进程直接调用内核空间的内存数据,而是需要经历一次从内核空间中的内存数据copy到用户空间的进程内存当中,所以简单说I/O就是把数据从内核空间中的内存数据复制到用户空间中进程的内存当中。

磁盘I/O:buff/cache 的区别
缓存(cache)是在读取硬盘中的数据时,把最常用的数据保存在内存的缓存区中,再次读取该数据时,就不去硬盘中读取了,而在缓存中读取。
缓冲(buffer)是在向硬盘写入数据时,先把数据放入缓冲区,然后再一起向硬盘写入,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。
简单来说,缓存(cache)是用来加速数据从硬盘中"读取"的,而缓冲(buffer)是用来加速数据"写入"硬盘的。

网络I/O:一切皆文件,本质为对socket文件的读写
获取请求数据,客户端与服务器建立连接发出请求,服务器接受请求
构建响应,当服务器接收完请求,并在用户空间处理客户端的请求,直到构建响应完成
返回数据,服务器将已构建好的响应再通过内核空间的网络I/0发还给客户端

同步/异步:关注的是消息通信机制,即调用者在等待一件事情的处理结果时,被调用者是否提供完成状态的通知。

同步: synchronous,被调用者并不提供事件的处理结果相关的通知消息,需要调用者主动询问事情是否处理完成

异步: asynchronous,被调用者通过状态、通知或回调机制主动通知调用者被调用者的运行状态

阻塞/非阻塞:关注调用者在等待结果返回之前所处的状态

阻塞: blocking,指IO操作需要彻底完成后才返回到用户空间,调用结果返回之前,调用者被挂起,干不了别的事情。

非阻塞: nonblocking,指IO操作被调用后立即返回给用户一个状态值,而无需等到IO操作彻底完成,在最终的调用结果返回之前,调用者不会被挂起,可以去做别的事情。

三、 Nginx的编译安装步骤详解

3-1关闭防火墙,安装依赖关系包

#关闭防火墙
[root@localhost ~]#systemctl stop firewalld.service
[root@localhost ~]#systemctl disable firewalld
[root@localhost ~]#setenforce 0
#安装依赖关系包
[root@localhost opt]#yum -y install pcre-devel zlib-devel gcc gcc-c++ make

3-2 新建用户 和组便于管理

#新建用户 nginx 服务程序默认 以 nobody 身份运行,建议为其创建专门的用户账户,以便更准确的控制访问权限
[root@localhost opt]#useradd -M -s /sbin/nologin nginx

3-3 将压缩包传入到/opt目录下 ,编译安装

#切换至opt目录,将压缩包传进来
[root@localhost opt]#cd /opt
[root@localhost opt]#ls
nginx-1.12.0.tar.gz
#解压文件
[root@localhost opt]#tar -zxf nginx-1.12.0.tar.gz 
[root@localhost opt]#ls
nginx-1.12.0  nginx-1.12.0.tar.gz
#切换至解压后的文件夹编译
[root@localhost opt]#cd nginx-1.12.0
[root@localhost nginx-1.12.0]#
./configure \
> --prefix=

你可能感兴趣的:(nginx,apache,前端)