Nginx 基础篇

文章目录

  • Nginx 基础篇
    • 一、 简介
      • 1、 名词解释
      • 2、 功能特性
        • 2.1 优势
        • 2.2 功能特性
          • 2.2.1 基本HTTP服务
          • 2.2.2 高级HTTP服务
          • 2.2.3 邮件服务
        • 2.3 常用功能
      • 3、 Nginx安装
        • 3.1 环境准备
        • 3.2 安装流程
    • 二、 Nginx启停控制
      • 1、 配置目录
      • 2、 信号控制
        • 2.1 Nginx进程号
        • 2.2 信号操作
      • 3、 常用命令
    • 三、 Nginx配置文件说明
      • 1、 文件结构
      • 2、 全局块指令
        • 2.1 user
        • 2.2 work process
        • 2.3 其他常用指令
      • 3、 events块指令
        • 3.1 accept_mutex
        • 3.2 multi_accept
        • 3.3 worker_connections
        • 3.4 use
      • 4、 http块指令
        • 4.1 定义mime-type
        • 4.2 自定义服务日志
        • 4.3 其他常用指令
      • 5、 server块和location块
    • 四、 基础篇实战
      • 1、 需求
      • 2、 文件准备
      • 3、 配置文件

Nginx 基础篇

一、 简介

1、 名词解释

  • web服务器:web服务器也叫网页服务器,英文名叫做 Web Server,主要功能是为用户提供网上信息浏览服务

  • HTTP:HTTP是超文本传输协议的缩写,是用于从web服务器传输超文本到本地浏览器的传输协议,也是互联网上应用最为广泛的一种网络协议。HTTP是一个客户端和服务端请求和应答的标准,客户端是终端用户,服务端是网站,通过使用web浏览器、网络爬虫或者其他工具,,客户端发起一个请求到服务器指定端口的HTTP请求

  • POP3:邮局协议的第三个版本

  • SMTP:简单邮件传输协议

  • IMAP:交互式邮件存取协议

  • CGI:通用网关接口

  • 正向代理

    Nginx 基础篇_第1张图片

  • 反向代理

    Nginx 基础篇_第2张图片

2、 功能特性

2.1 优势
  1. 运行速度更快,并发速度更高

    单次请求或高并发请求的环境下,Nginx都会比其他Web服务器响应速度更快

  2. 配置简单,扩展性强

    Nginx的设计极具扩展性,它本身是由很多模块组成,这些模块的使用可以通过配置文件的配置来添加。

  3. 高可靠性

    Nginx采用的是多进程模式运行,其中有一个master主进程和N多个worker进程,worker进程的数量我们可以手动设置

  4. 热部署

    Nginx可以在不停止的情况下,对Nginx进行文件升级、更新配置和更换日志文件等功能

  5. 成本低,BSD许可证

2.2 功能特性
2.2.1 基本HTTP服务

Nginx可以提供基本HTTP服务,可以作为HTTP代理服务器和反向代理服务器,支持通过缓存加速访问,可以完成简单的负载均衡和容错,支持包过滤功能,支持SSL等。

  • 处理静态文件、处理索引文件以及支持自动索引
  • 提供反向代理服务器,并可以使用缓存加上反向代理,同时完成负载均衡和容错
  • 提供对FastCGI。memcached等服务缓存机制,同时完成负载均衡和容错
  • 使用Nginx的模块化特性提供过滤器功能。Nginx基本过滤器包括gzip压缩、ranges支持、chunked响应、XSLT、SSL以及图像缩放等。其中针对包括多个SSL的页面,经由FastCGI或反向代理,SSI过滤器可以并行处理
  • 支持HTTP下的安全套接层安全协议SSL
  • 支持基于加权和依赖优先权的HTTP/2
2.2.2 高级HTTP服务
  • 支持基于名字和IP的虚拟主机设置
  • 支持HTTP/1.0中的KEEP-Alive模式和管线(PipeLine)模型连接
  • 自定义访问日志格式、、带缓存的日志写操作以及快速日志轮转
  • 提供3xx-5xx错误代码重定向功能
  • 支持重写(Rewrite)模块扩展
  • 支持重新加载配置以及在线升级时无需中断正在处理的请求
  • 支持网络监控
  • 支持FLV和MP4流媒体传输
2.2.3 邮件服务

Nginx提供邮件代理服务也是基本开发需求之一,主要包括以下特性:

  • 支持IMPA/POP3代理服务功能
  • 支持内部SMTP代理服务功能
2.3 常用功能
  • 静态资源部署
  • Rewrite地址重写
  • 反向代理
  • 负载均衡
    • 轮询
    • 加权轮询
  • web缓存
  • 环境部署
    • 高可用的环境
  • 用户认证模块…

Nginx的核心组成:

  1. Nginx二进制可执行文件
  2. nginx.conf 配置文件
  3. error.log 错误的日志记录
  4. access.log 访问日志记录

3、 Nginx安装

3.1 环境准备

Nginx的官方网站为:https://nginx.org/en/

Nginx 基础篇_第3张图片

获取Nginx源码:https://nginx.org/download/

打开上述网站,就可以查看到Nginx的所有版本,选中自己需要的版本进行下载。我们可以现在Windows中下载,然后上传到服务器中;也可以直接从服务器下载。

环境准备:

  • 准备内核为2.6以上版本的操作系统

  • 确保能上网

  • 关闭系统防火墙

    systemctl stop firewalld  # 停止防火墙
    systemctl disable firewalld  # 进行防火墙自动启动
    
  • Linux基础

  • 关闭SELinux

  • 安装依赖:

    • 首先需要准备gcc编译器

      yum install -y gcc
      
    • PCRE:解析正则表达式

      yum install -y pcre pcre-devel
      
    • zlib:压缩算法

      yum install -y zlib zlib-devel
      
    • OpenSSL:进行安全通信

      yum install -y openssl openssl-devel
      
3.2 安装流程

Nginx安装,有两种方式安装:

  1. 通过源码安装

    mkdir -p nginx/core   # 工作目录
    cd nginx/core  # 进入目录
    curl https://nginx.org/download/nginx-1.22.0.tar.gz -o nginx-1.22.0.tar.gz  # 将压缩包下载到服务器上
    tar -zxvf  nginx-1.22.0.tar.gz  # 解压缩
    cd nginx-1.22.0  # 进入文件
    ./configure  # 编译运行
    ./configure --help  # 获取编译运行的安装参数
    make && make install  # 安装
    # 安装成功后,进入到二进制文件目录。开启Nginx
    /usr/local/nginx/sbin/nginx # 注意需要关闭防火墙才可以成功访问
    

    我们可以传入不同的安装参数,编译自定义较强的Nginx

    推荐使用这种方式安装

    这种方式安装的卸载方式为:

    /usr/local/nginx/sbin/nginx -s stop  # 强行停止正在运行的进程
    rm -rf /usr/local/nginx  # 直接移除文件
    cd ~/nginx/core  # 进入编译目录
    make clean  # 清空编译的文件残留
    
  2. 通过yum安装

    在官方文档上面有安装文档:https://nginx.org/en/linux_packages.html#RHEL

    # 安装yum工具
    sudo yum install -y yum-utils  
    # 将Nginx配置文件写入yum中,这里安装的是稳定版
    cat << EOF > /etc/yum.repos.d/nginx.repo
    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    
    [nginx-mainline]
    name=nginx mainline repo
    baseurl=http://nginx.org/packages/mainline/centos/\$releasever/\$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    EOF
    # Nginx
    sudo yum install -y nginx
    

    这种方式安装的卸载方式为:

    /usr/sbin/nginx -s stop  # 停止Nginx进程
    # 先删除文件,在移除残留
    rm -rf /usr/sbin/nginx
    rm -rf /etc/nginx
    rm -rf /etc/init.d/nginx
    yum remove -y nginx  # 删除卸载残留
    

二、 Nginx启停控制

对于Nginx的启动和停止在linux系统中也有很多方式,这里介绍两种方式:

  1. Nginx的信号控制

  2. Nginx的命令行控制

在此之前,我们还需要学习一下配置目录的相关信息

1、 配置目录

这里的安装方式是使用源码安装的,Nginx的目录比较集中

(base) [root@MyCentOS nginx]# tree
.
├── conf

│   ├── fastcgi.conf  # 相关配置文件
│   ├── fastcgi.conf.default  # fastcgi.conf 的备份文件
│   ├── fastcgi_params  # fastcgi 的参数文件
│   ├── fastcgi_params.default  # fastcgi 参数备份文件
│   ├── scgi_params  # scgi 的参数文件
│   ├── scgi_params.default  # scgi 的参数备份文件
│   ├── uwsgi_params  # uwsgi 的参数文件
│   ├── uwsgi_params.default  # uwsgi 的参数备份文件

│   ├── mime.types  # 记录的是mine类型与文件后缀名的关系
│   ├── mime.types.default  # 副本
│   ├── nginx.conf  # Nginx配置文件
│   ├── nginx.conf.default  # Nginx配置备份文件
	
│   ├── koi-utf  # 这三个都与编码有关
│   ├── koi-win
│   └── win-utf
├── html  # html 页面
│   ├── 50x.html  # 访问失败后的页面
│   └── index.html  # 成功访问的默认页面
├── logs  # 访问日志
|   ├── access.log  # 访问日志
|   ├── error.log  # 错误日志
|   ├── nginx.pid  # Nginx进程的pid
└── sbin
    └── nginx  # Nginx二进制文件,可以进行停止等操作

2、 信号控制

2.1 Nginx进程号

Nginx 基础篇_第4张图片

我们现在作为管理员,只需要通过master进程发送信号就可以来控制Nginx,这个时候末尾需要两个前提条件,一个是要操作的master进程,一个是信号。

查看Nginx的进程ID:

  1. ps -ef | grep nginx:通过Linux命令获取
  2. cat logs/nginx.pid:通过访问Nginx进程的pid
2.2 信号操作

我们获取到Nginx的pid之后,就可以对根据pid,对Nginx进行操作了:

信号 作用
TERM/INT 立即关闭整个服务
QUIT “优雅”地关闭整个服务
HUB 重读配置文件并使用服务对新配置生效
USER1 重新打开日志文件,可以用来进行日志分割
USER2 平滑升级到最新版的Nginx
WINCH 所有子进程不在接收处理新连接,相当于给work进程发送QUIT指令

调用命令为:kill -signal PID

signal:即为信号

PID:即为Nginx中master的进程id

kill -TERM $(cat /usr/local/nginx/logs/nginx.pid)  # 使用$ 标明为变量,获取到进程pid
kill -QUIT $(cat /usr/local/nginx/logs/nginx.pid)  
kill -HUB $(cat /usr/local/nginx/logs/nginx.pid)
kill -USER1 $(cat /usr/local/nginx/logs/nginx.pid)  # 实现日志分割
kill -USER2 $(cat /usr/local/nginx/logs/nginx.pid)  # 如果有新增的master进程,先把原来的事件处理完,再启动新的master进程
kill -WINCH $(cat /usr/local/nginx/logs/nginx.pid)  # 关闭所有的woker进程,注意不会关闭master进程

平滑升级:

  1. 如果升级Nginx程序,先用新程序替换旧程序文件,编译安装的话新程序直接编译到Nginx安装目录中。

  2. 此时旧的Nginx主进程将会把自己的进程文件改名为.oldbin,然后执行新版 Nginx。新旧Nginx会同时运行,共同处理请求。
    这时要逐步停止旧版 Nginx,输入命令:
    kill -WINCH 旧版主进程号
    慢慢旧的工作进程就都会随着任务执行完毕而退出,新版的Nginx的工作进程会逐渐取代旧版 工作进程。

  3. 此 时,我们可以决定使用新版还是恢复到旧版。

    不重载配置启动新/旧工作进程
    kill -HUP 旧/新版主进程号
    从容关闭旧/新进程
    kill -QUIT 旧/新主进程号
    如果此时报错,提示还有进程没有结束就用下面命令先关闭旧/新工作进程,再关闭主进程号:
    kill -TERM 旧/新工作进程号
    

3、 常用命令

(base) [root@MyCentOS nginx]# sbin/nginx -h 
nginx version: nginx/1.22.0
Usage: nginx [-?hvVtTq] [-s signal] [-p prefix]
             [-e filename] [-c filename] [-g directives]

Options:
  -?,-h         : 显示帮助信息
  -v            : 显示版本信息
  -V            : 显示版本信息,同时显示configure时的配置信息
  -t            : 检测Nginx配置语法是否正确
  -T            : 检测Nginx配置语法是否正确,同时显示所有的配置信息
  -q            : 在测试期间,只输出报错信息,如果测试成功,则不输出内容
  -s signal     : 给master进程发送信号: stop, quit, reopen, reload
  -p prefix     : 指定Nginx的prefix路径 (default: /usr/local/nginx/)
  -e filename   : 指定错误日志输出路径(default: logs/error.log)
  -c filename   : 指定nginx.conf配置文件路径 (default: conf/nginx.conf)
  -g directives : 用来补充Nginx配置文件,在Nginx服务启动时应用全局的配置

signal:

  • stop:快速关闭,类似于TERM/INT 信号的作用
  • quit:优雅的关闭,类似于QUIT的作用
  • reopen:重新打开日志文件,类似于USER1的作用
  • reload:重新读取配置文件,类似于HUP的作用

三、 Nginx配置文件说明

1、 文件结构

Nginx的核心配置文件默认是放在/usr/local/nginx/conf/nginx.conf

读取Nginx自带的Nginx配置文件,我们将其中的注释部分删除后,提取出以下内容:

worker_processes  1;  # 指定工人工作的数量


events {
    worker_connections  1024;  # 工人最大连接数
}


http {
    include       mime.types;  # 导入mime.ty文件
    default_type  application/octet-stream;  # 默认文件类型为文件流

    sendfile        on;  # 是否使用sendfile()传输文件

	keepalive_timeout  65;  # 最长的连接时长

    server {
        listen       80;  # 监听的端口
        server_name  localhost;

        location / {  # 基础路径
            root   html;  # 资源目录
            index  index.html index.htm;  # 资源文件
        }
        error_page   500 502 503 504  /50x.html;  # 50x访问错误的处理
        location = /50x.html {  # 错误后的路由
            root   html;  # 存放资源的目录
        }
    }
}

Nginx基本的结构语法:

  1. 配置文件由指令与指令块构成
  2. 每条指定以分号(;)结尾,指令与参数间以空格符号分割
  3. 指令块以大括号({})将多条指令组织在一起
  4. include语句允许组合多个配置文件以提升可维护性
  5. 使用#符号添加注释
  6. 使用$符号使用变量
  7. 部分指令参数支持正则表达式

2、 全局块指令

2.1 user

user:用于配置运行Nginx服务器的worker进程的用户和用户组

语法 user user [group];
默认值 nobody
位置 全局块

该属性也可以在编译的时候指定,语法:./configure --user=user --group=group

如果两个地方都进行了设置,最终生效的是配置文件中的配置

使用步骤:

user www  # 设置一个用户信息,控制工人的用户的信息为www
# 如果没有这个用户,则需要创建一个用户
useradd www  # 创建一个用户,再在配置文件中添加 user www

那修改用户有什么作用呢?

  • 首先,我们在root用户以及www用户下创建一个文件html/index.html

  • 修改配置文件nginx.conf

            location / {
                root   /root/html;
                index  index.html index.htm;
            }
    
  • 测试启动访问:

    返回403拒绝访问的错误
    

    分析原因:因为当前用户没有访问/root/html目录的权限

  • 再次修改配置文件nginx.conf

            location / {
                root   /home/www/html;
                index  index.html index.htm;
            }
    
  • 测试启动访问:

    能够正常访问
    

综上所述,使用user指令可以指定启动运行工作进程的用户及用户组,这样对于行的权限访问控制的更加精细,也更加安全。

2.2 work process

master_process:用来指定是否开启工作进程

语法 master_process on | off;
默认值 master_process on;
位置 全局块

worker_processes:用于配置Nginx生成工作进程的数量,这个是Nginx服务器实现并发处理服务的关键所在。理论上来说,值越大,可以支持的并发处理量也越多,但事实上,这个值的设定是需要受到来自服务器自身的限制,建议将该值和服务器CPU内核数保持一致。

语法 worker_processes num | auto;
默认值 worker_processes 1;
位置 全局块

如果将worker_processes设置为2,则会有两个工人工作。

2.3 其他常用指令

daemon:设定Nginx是否以守护进程的方式启动

守护式进程是linux后台执行的一种服务进程,特点是独立于控制终端,不会随着终端关闭而停止。

语法 daemon on | off;
默认值 daemon on;
位置 全局块

pid:用来配置Nginx当前master进程的进程号ID存储的文件路径

语法 pid file;
默认值 默认为:/usr/local/nginx/logs/nginx.pid
位置 全局块

该属性可以通过./.configure --pid-path=PATH来指定

error_log:用来配置Nginx的错误日志存放路径

语法 error_log file [日志级别];
默认值 error_log logs/error.log error;
位置 全局块、http、server、location

该属性可以通过:./config --error-log-path=PATH来指定

其中日志级别的值有:debug|info|notice|warn|error|crit|alert|emerg

include:用来引入其他的配置文件,使Nginx的配置更加灵活

语法 include file;
默认值
位置 任意位置

3、 events块指令

3.1 accept_mutex

accept_mutex:用来设置Nginx网络连接序列化

语法 accept_mutex on | off;
默认值 accept_mutex on;
位置 events

当一个新连接到达时,如果激活了accept_mutex,那么多个Worker将以串行方式来处理,其中有一个Worker会被唤醒,其他的Worker继续保持休眠状态;如果没有激活accept_mutex,那么所有的Worker都会被唤醒,不过只有一个Worker能获取新连接,其它的Worker会重新进入休眠状态,这就是「惊群问题」

3.2 multi_accept

multi_accept:用来设置是否允许同时接收多个网络连接

语法 multi_accept on | off;
默认值 multi_accept off;
位置 events

如果multi_accept被禁止了,Nginx一个工作进程只能同时接受一个新的连接。否则,一个工作进程可以同时接受所有的新连接。

3.3 worker_connections

worker_connections:用来配置单个worker进程最大的连接数

语法 worker_connections number;
默认值 worker_connections 512;
位置 events

这个连接数,不仅仅包括和前端用户建立的连接数,而是包括所有可能的连接数。。另外,number值不能大于操作系统支持打开的最大文件句柄数量。

3.4 use

use:用来设置Nginx服务器选择哪种事件驱动来处理网络消息

语法 use method;
默认值 根据操作系统而定
位置 events

注意:此处所选择的事件处理器是Nginx优化部分的一个重要内容。method的可选值有select/poll/epoll/kqueu等,之前准备centos环境的时候,我们强调过要使用linux内核在2.6以上,就是为了使用epoll函数来优化Nginx

我们也可以在编译的时候指定事件处理器:

--with-select_module
--without-select_module
--with-poll_module
--without-poll_module

来设置是否需要将对应的事件驱动模块编译到Nginx

4、 http块指令

4.1 定义mime-type

我们都知道浏览器中可以显示的内容有HTML、XML、GIF等种类繁多的文件、媒体等资源,浏览器为了区分这些资源,就需要使用MIME-TYPE。所以说,MIME-TYPE 是网络资源的媒体类型。Nginx作为web服务器,也需要能够识别前端请求的资源类型。

在Nginx的配置文件中,默认有两行配置:

    include       mime.types;
    default_type  application/octet-stream;

default_type:用来配置Nginx响应前端请求默认的MIME类型

语法 默认值 位置
dafult_type mime-type; default_type text/plain; http、server、location

include mimetypes:把mime.types文件中MIME类型与相关类型文件的文件后缀名的对应关系加入到当前的配置文件中

实例:直接返回json字符串或者文本字符串

location /get_text {
	default_type text/html;
	return 200 "This is text from nginx";
}
location /get_json {
	default_type application/json;
	return 200 '{"name": "TOM", "age": 18}';
}
4.2 自定义服务日志

Nginx中,日志的类型分access.logerror.log

Nginx服务器支持对服务日志的格式、大小、输出等进行设置,需要用到两个指令。

分别是access_loglog_format指令

access_log:用来设置用户访问日志的相关属性。

语法 access_log path [format [buffer=size]];
默认值 access_log logs/access.log combined;
位置 http、server、location

format:其为log_format里面指定的name

log_format:用来指定日志的输出格式。

语法 log_format name [escape=default|json|none] string ....;
默认值 log_format combined "...";
位置 http
4.3 其他常用指令

sendfile:用来设置Nginx服务器是否使用sendfile()传输文件,该属性可以大大提高Nginx处理静态资源的性能。

语法 sendfile on | off
默认值 sendfile off
位置 http、server、location

keepalive_timeout:用来设置长连接的超时时间

为什么要使用keepalive

  1. 我们都知道HTTP是一种无状态协议,客户端向服务端发送一个TCP请求,服务端响应完毕后断开连接
  2. 如果客户端向服务端发送多个请求,每个请求都需要重新创建一次连接,效率相对来说比较低,使用keepalive模式。可以告诉服务器,在处理完一个请求后,保持这个TCP连接的打开状态。若接收到来自这个客户端的其他请求,服务端就会利用这个未被关闭的连接,而不需要重新创建一个新连接,提升效率。但是,这个连接也不能一直保持,否则,会使服务端的性能下降,这个时候就需要我们进行设置其的超时时间
语法 keepalive_timeout time;
默认值 keepalive_timeout 75;
位置 http、server、location

5、 server块和location块

本节,我们主要来认识一下Nginx默认给的nginx.conf中的相关内容,以及server块与location块在使用的时候需要注意的一些内容。

    server {
        listen       80;  # 监听的服务器的端口 listen port;
        server_name  localhost;  # 服务名称,可以指定域名、ip等 server_name ip;

        location / {  # 根目录
            root   html;  # 资源所对应的目录 root path;
            index  index.html index.htm;   # 返回的静态资源页面
        }
        error_page   500 502 503 504  /50x.html;  # 错误码,出现50x后,跳转到 /50x.html
        location = /50x.html {  # 设置路由
            root   html;  # 资源所对应的目录
        }

这里面的变量设置,其有就近原则,优先选择离自己进的变量配置

四、 基础篇实战

1、 需求

前面,我们已经对Nginx服务器默认配置文件的结构和涉及的基本指令做了详细的阐述。通过这些指令的合理配置,我们可以让一台nginx服务器正常工作,并且提供基本的web服务器功能

接下来,我们通过一个比较完整和最简单的基础配置实例,来巩固前面所学习的指令及其配置:

  1. 有如下访问:

    http://192.168.56.101:8081/server1/location1
    	访问的资源是:index_str1_location1.html
    http://192.168.56.101:8081/server1/location2
    	访问的资源是:index_str1_location2.html
    	
    http://192.168.56.101:8082/server2/location1
    	访问的资源是:index_str2_location1.html
    http://192.168.56.101:8082/server1/location2
    	访问的资源是:index_str2_location2.html
    
  2. 如果访问的资源不存在:

    返回自定义的404页面

  3. /server1/server2的配置使用不同的配置文件分割

  4. /server1/server2各自创建一个访问日志文件

2、 文件准备

准备相关文档,目录如下:

(base) [root@MyCentOS home]# tree
.
└── www
    ├── conf.d
    └── myweb
        ├── 404.html
        ├── server1
        │   ├── loction1
        │   │   ├── index_str1_location1.html
        │   ├── loction2
        │   │   └── index_str1_location2.html
        │   └── logs
        └── server2
            ├── loction1
            │   └── index_str2_location1.html
            ├── loction2
            │   └── index_str2_location2.html
            └── logs

10 directories, 7 files

3、 配置文件

基础的配置文件

user  www;  # 使用的用户名
worker_processes  2;  # 创建的工人数量

error_log  logs/error.log;  # 错误日志输出路径

pid        logs/nginx.pid;  # 进程pid存储路径
daemon on;  # 开启守护进程

events {
    worker_connections  1024;  # 一个工人最大连接数
    accept_mutex on;  # 网络连接序列化
    multi_accept on;  # 同时接收多个网络连接
    use epoll;  # 使用的事件处理器
}


http {
    include       mime.types;  # 导入mime.type 文件
    default_type  application/octet-stream;  # 默认传输类型

    sendfile        on;  # 使用sendfile()发送文件
    keepalive_timeout  65;  # 保持连接的最大时长65s

    include /home/www/conf.d/*.conf;  # 包含我们自定义的配置文件
    
    server {
        listen       80;  # 监听的端口
        server_name  localhost;  # 服务名称

        location / {  # 更路由配置
            root   html;  # 资源路径
            index  index.html index.htm;  # 需要传输的文件名
        }

        error_page   500 502 503 504  /50x.html;  # 50x错误返回的路由
        location = /50x.html {  # 配置路由
            root   html;  # 资源路径
        }
    }
}

server1配置文件:

server {
        listen 8081;  # 监听8081端口
        server_name localhost;  # 设置服务名称
        access_log /home/www/myweb/server1/logs/access.log;  # 指定access日志路径
        location /server1/loction1 {  # 设置路由
                root /home/www/myweb;  # 资源路径
                index index_str1_location1.html;  # 资源名称
        }
        location /server1/loction2 {  # 设置路由
                root /home/www/myweb;  # 资源路径
                index index_str1_location2.html;  # 资源名称
        }
        error_page 404 /404.html;  # 404错误重定向
        location = /404.html {  # 配置404重定向路由
                root /home/www/myweb;  # 资源根路径
                index 404.html;  # 指定返回需要渲染的文件
        }
}       

server2 配置文件:

server {
        listen 8082;
        server_name localhost;
        access_log /home/www/myweb/server2/logs/access.log;
        location /server2/loction1 {
                root /home/www/myweb;
                index index_str2_location1.html;
        }
        location /server2/loction2 {
                root /home/www/myweb;
                index index_str2_location2.html;
        }
        error_page 404 /404.html;
        location = /404.html {
                root /home/www/myweb;
                index 404.html;
        }
}

最后,启动我们的nginx服务:

/usr/local/nginx/sbin/nginx -s stop 
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx

你可能感兴趣的:(Linux,服务器,nginx,服务器,网络)