nginx入门

本篇教程不包含安装过程,需要安装请自行google或者参考官方文档

本篇教程包括:

  • 启动和停止nginx、以及重载nginx配置
  • nginx配置文件说明
  • 如何配置nginx提供静态内容服务

nginx是一款高性能高并发的web服务器,工作方式为一个master进程加多个worker进程。master进程主要负责解析配置文件、管理worker进程。worker进程才实际处理请求。nginx采用基于事件驱动的模型,依赖于操作系统的机制在worker进程间高效的分发请求。worker进程数可以在配置文件中定义,一般建议配置为操作系统可用的cpu核数。

查看 worker processes 了解worker进程配置方法。

nginx及其模块的工作方式取决于配置文件的配置。在默认情况下,配置文件名称是nginx.conf,一般存放在 /usr/local/nginx/conf 或者 /etc/nginx 或者 /usr/local/etc/nginx 目录下。

启动和停止nginx、以及重载nginx配置

要启动nginx的话,直接运行nginx可执行文件,最好把执行文件路径配置到环境变量中。启动nginx后,可以通过使用 -s 加上一系列指令来控制nginx。
例如:

nginx -s stop       #立刻停止nginx
nginx -s quit       #安全停止nginx(等worker进程完成处理中的请求后再退出)
nginx -s reload     #修改nginx.conf后使用该命令使配置生效
nginx -s reopen     #重新打开日志文件

需要注意的是:运行这些命令的用户必须和启动nginx的用户一致。

这里讲一下reload指令。master进程收到reload指令时,首先会检查新的配置文件的语法有效性并尝试应用其中的配置。如果没问题,master进程会启动一批新的worker进程,然后发送shutdown命令给老的worker进程;否则,master进程将回滚修改并继续使用旧的配置工作。老的worker进程在收到master进程的shutdown命令后,将会拒绝新的连接,并在处理完成剩余的请求后退出。nginx通过这种方式实现热部署。

还有一个安全停止nginx的方法:

kill -s QUIT PID        #PID为master进程id

master进程id默认会被写入到 /usr/local/nginx/logs 或者 /var/run 目录下的nginx.pid文件中,如果是macos下通过homebrew安装的nginx,那么nginx.pid文件应该在/usr/local/var/run目录中。

通过ps命令查看正在运行的nginx进程:

ps -aux | grep nginx

查看 Controlling nginx 了解更多nginx控制指令。

nginx配置文件说明

nginx由多个模块组成,这些模块由配置文件中指定的指令控制。nginx中的指令分为两种,简单指令和模块指令。

  • 简单指令
    由名称和参数组成,使用空格分割,分号结尾。比如:
worker_processes  1;        #worker进程数为1
  • 模块指令
    由名称和一个 {} 组成,{} 中可以包含简单指令,也可以嵌套模块指令。比如:
events {
    worker_connections 1024;
}

http {
    server {
        location / {
            root /usr/local/var/www;
        }
        location /images {
            root /usr/local/var/www;
        }
    }
}

如果模块指令的{}中包含其他指令,我们称之为上下文。就拿上面的配置来说,events、http、server、location都叫做上下文。nginx的配置是有上下文层级关系的。最外层的称为 main context 主上下文,main包含events和http等,http包含server,server包含location。

如何配置nginx提供静态内容服务

web服务器的一个重要特性就是提供静态内容服务(比如图片,HTML网页)。下面开始实战:

先准备一些静态资源

mkdir /usr/local/var/www        #存放html网页文件
mkdir /usr/local/var/images     #存放一些图片
cd  /usr/local/var/www
echo '<html><body>Hello Nginx!</body></html>' > hello.html

你可以使用任意的目录,不需要和我一致。然后打开nginx.conf,这个文件默认会有一堆配置,我们全部删掉,改为如下配置:

http {
    server {
        #默认监听80端口
        location / {
            root /usr/local/var/www;
        }
        location /images/ {
            root /usr/local/var;
        }
    }
}

location
    用来匹配请求url,/ 表示匹配所有请求(当其他location都无法匹配时),/images/ 表示匹配url前缀是/images/的请求。如果一个请求url匹配了多个location,nginx会选择最长前缀匹配的location。

root
    root后面的参数表示本地文件系统路径,将root path和location path组合在一起,就是你要访问的资源所在目录。比如:在浏览器请求http://localhost/images/1.png,那么location /images/ 就会匹配上这个请求,然后nginx会去读取/usr/local/var/images/1.png这个文件返回给浏览器。如果文件不存在,nginx会返回404。

好了,现在我们启动一下nginx(需要先配置好环境变量)

sudo nginx

如果你之前已经启动过,那么使用

sudo nginx -s reload

打开浏览器,访问http://localhost/hello.html将会看到Hello Nginx!。如果你在/images/下放置了一些图片,访问http://localhost/images/xxx.img即可。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值