欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Nginx learning —— 简单了解 Nginx 及其配置文件

程序员文章站 2022-06-17 09:06:25
...

Nginx - Beginner’s Guide

翻译自 https://nginx.org/en/docs/beginners_guide.html
一更:27/3 20:23
二更:28/3 21:20

FLAG 二次阅读

这个教程将会描述如何开启、关闭 nginx,以及重载配置信息,解释配置文件的结构、描述如何配置 nginx 服务静态内容,如何配置 nginx 使其作为一个代理服务器,如何与 FastCGI 应用连接。

nginx 有一个主进程与许多工作进程。主进程的作用是读取、计算配置信息,然后分发给工作进程。工作进程执行真正的请求处理。nginx 采用基于事件的模型以及依赖操作系统的机制来高效地分发请求给工作进程。工作进程的数量由配置文件决定,可能是固定的配置或者根据可用 CPU 核心数自动调整。

nginx 及其模型的工作方式由配置文件决定。默认情况下,配置文件的名字为 ngixn.conf ,放置在 /usr/local/nginx/conf, /etc/nginx 或者 /usr/local/etc/nginx 目录下。

开始、停止、重载配置信息

运行可执行文件来启动 nginx。nginx 一旦启动,它通过调用 -s 参数来控制,使用如下命令:

nginx -s signal

signal 可用如下代替:

  • stop —— 快速关闭
  • quit —— 优雅关闭
  • reload —— 重载配置文件
  • reopen —— 重新打开 log 文件

比如,停止 nginx 进程同时等待工作进程完成当前的请求,执行如下命令:

nginx -s quit 
这个命令应该在开启 nginx 的相同用户下执行

配置文件的更改直到使用命令将重载配置信息发送到nginx或者重启nginx才会起作用。执行如下命令来重载配置文件

nginx -s reload

主进程一旦接收到重载配置文件的信号,它会检查这个新配置文件语法的正确性,然后尝试应用其提供的配置信息。如果语法正确,主进程会启动新的工作进程,然后给之前的工作进程发送消息要求它们停止工作。不然的话,主进程会回滚这个修改,继续使用之前的配置工作。已经接收到终止命令的旧工作进程,会停止接受新的连接,继续为当前请求提供服务直到这些请求全部服务完毕。之后,旧工作进程会退出。

也可以通过 Unix 下的工具如 kill 来向 nginx 发出信号。这种情况下,信号将会直接发送给给定 ID 的进程。默认 nginx 主进程 ID 在 /usr/local/nginx/logs 或 /var/run 目录下的 nginx.pid 文件中给出。比如,主进程 ID 是 1628,发送 QUIT 信号会使 nginx 优雅地退出

kill -s QUIT 1628

使用 ps 工具,得到所有运行中的 nginx 进程:ps -ax | grep nginx

点击 Controlling nginx. 查看更多向 nginx 发送信号的内容。

配置文件的结构

nginx 由在配置文件中指定指令控制的模型组成。指令被分成一些简单指令以及块指令。简单指令由以空格分割、 ; 结尾的名称和参数组成。块指令和简单指令格式相同,只是由一对花括号{}包围。如果一个块指令在花括号中有其他指令,它被称作 context。

位于所有 context 之外的指令被认为是 main context。events 和 http 指令位于 main context 中,service 在 http 中,location 在 server 中。

注释以 # 开头。

服务静态内容

web 服务器的一个重要任务是服务文件(如图片、静态HTML页面)。你将根据要求实现一个例子,文件从不同的目录下(/data/www 可能包含静态HTML文件,/data/images 包含图片)提供服务。编辑配置文件,在 http 块内设置一个包含两个 location 块的 server 块。

这里我换成了自己的例子,和文档中的不太一样,差别也不大

首先建立 /data/webShow 文件夹,直接从网上下载一个模板然后放进来(我找的这个, wget http://fjdx.sc.chinaz.com/Files/DownLoad/moban/201712/moban2613.rar 解压之后完事)。之后就会得到 index.html、css、js、images文件夹,在 /etc/nginx/nginx.conf 配置文件中如下配置:

http{
    # 没有这个的话会把 js 文件当成 text 普通文件展示
    include       mime.types;
    server{
       # 自己的域名
       server_name www.zhoust.cn;
       # 指定默认首页
       index index.html;

          # 注意,这个 root 指的是文件夹 FLAG
          location / {
            root /data/webShow;
          }

       location ~ /(javascript|css|images) {
            root /data/webShow;
       }
    }
}

重载 nginx 配置文件: nginx -s reload

一般来说,配置文件会包含许多 server 块,这些块由它们监听的端口号以及服务名分割。FLAG? nginx 会通过比较请求头中的指定URI与 server 块中 location 指令指定的参数,来指定由哪个 server 处理这个请求。

简单分析下,在上述配置后,如果你访问 www.zhoust.cn ,会定位到 /data/webShow/index.html 文件,然后就会把各种 js、images、css 配置到位。如果在我还没有修改 nginx 配置文件的话,你会看到这个下载下来的首页,挺好看的其实~~

参考自:

  1. nginx服务器绑定域名和设置根目录的方法
  2. Resource interpreted as stylesheet but transferred with MIME type text/html
  3. nginx做静态代理时css加载不出问题解决
相关标签: nginx