Nginx一些概念和使用

86 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 15 天,点击查看活动详情

复习下Nginx的简单使用

Nginx介绍

Nginx 是一个 Http 反向代理服务器,也可以作为一个邮件服务器来使用,还有一个功能是可以作为 TCP/UDP 代理来使用。我们常听说的就是用 Nginx 用来做 Http 代理,做后端集群的总入口。

Nginx 安装

这里用 Centos 为例,官方推荐的安装方式几个步骤就可以搞定了。

首先需要安装 Linux 下的包管理软件,命令我给你贴下:

sudo yum install yum-utils

上面的步骤搞完之后,就可以对软件仓库进行管理了。在这之前要创建一个仓库描述文件 /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

在这里我们创建了两个仓库信息,一个是 nginx-stable,一个是 nginx-mainline,默认情况下 yum 会从 nginx-stable 拉取包信息,stable 里都是稳定版。当然想尝试新东西的话,可以用 sudo yum-config-manager --enable nginx-mainline 命令启用 nginx-mainline 仓库。

最后可以用命令 sudo yum install nginx 将 Nginx 安装到系统上,安装就算到此结束。

Nginx 的使用

Nginx 的使用十分简单,实际上就是改改配置文件,然后用命令启动就完事了。配置文件的名字默认为 nginx.conf,Nginx 将会从三个路径加载配置文件,它们是 /usr/local/nginx/conf/etc/nginx,以及 /usr/local/etc/nginx。只要在三个路径中任何一个路径中存在配置文件,Nginx 就能顺利启动。

Nginx 的启动并不难,只有几个命令,如下:

nginx -s stop # 关闭Nginx
nginx -s quit # 优雅关机
nginx -s reload # 重新加载配置文件,在修改了配置文件之后别忘了执行着一条语句
nginx -s reopen # 重新打开日志文件

怎么使用知道了,现在的问题是,配置文件应该怎么配?接下来看看关于 Nginx 配置文件中的一些概念。

Nginx 中的一些概念

我第一次知道 Nginx 是通过看视频知道的,当时跟着视频上操作代理就起效了,也不知道配置了个啥。配置文件也看不懂,有需要的时候还是需要百度。这也怪我没了解 Nginx 的概念就直接用。

首先,Nginx 的配置文件是 nginx.conf,它里面是由一系列的指令组成的。整个文件称为 Nginx 的 main context,记住嗷,是整个文件。那么作为一个 Http 代理服务器,肯定是需要有 Http 的配置信息的对吧?所以在文件中,会有 http 配置项作为 main 的顶层配置。然后,Nginx 本身需要配置日志,所以就有另外一个必须的顶层配置 events。配置文件里配置了这两,就可以启动 Nginx 了。说那么多没有用,我们来看看最简单的配置信息长什么样。nginx.conf 的配置信息如下。

events {}
http {
    server {
        location / {
            root /data/www;
        }
    }
}

看出来了吧,最外层是必要的两个配置,events 和 http,一个记录事件,一个是我们配置的代理信息,这里是将所有请求接受,然后通过uri上的路径到本地服务器的 /data/www 目录下查找,有文件就直接返回文件,没有就报404。

接着,要知道在文件中,用 {} 括起来的部分是块指令,块指令可以嵌套块指令,另外还有简单指令,就像示例中的 root /data/www;,需要用 ; 号结束。

http 块指令可以嵌套 server 块指令,代表对代理服务器的描述,server 中又可以嵌套 location 指令,代表我们代理的后端服务器,server 不能有多个,但是路径匹配是可以有多个的。即以下的写法是正确的:

events {}
http {
    server {
        location / {
            root /data/www;
        }
        location /images/ {
            root /data;
        }
    }
}

但是下面的写法会报错:

events {}
http {
    server {}
    server {
        location / {
            root /data/www;
        }
        location /images/ {
            root /data;
        }
    }
}

那么今天的分享就到这。