Nginx 之初步认知

Productivity Dec 01, 2019


nginx 具有体积小巧,功能强大的特性,整个程序都是基于 C 语言开发,先天具有高性能和良好的跨平台表现。

几年前建立个人站点的机缘下,接触了 HTTPD 继而用轻量级的 Nginx 取而代之,使用 Nginx 也有一段时间了,虽然谈不上精通,但是对于用来解决问题来说,积累了一些自己的经验。在 nginx 普及的当下,有必要把我在个人网站中对 nginx 的使用心得记录在此,以供有需要的新人少走弯路。

了解 nginx 功能最好的方式是查看配置文件: nginx.conf ,纵观配置文件可以看到处于最高层的配置分别是 user, events, http, mail ,分别对应 nginx 的不同功能模块。

nginx 支持 mail,http, tcp/udp 等业务的服务器类型。

全局基础配置

user: 配置 nginx 服务器运行时的用户权限,在 unix* 家族的系统中,对用户,用户组,都有严格的权限控制,nginx 的初期目标平台就是 linux ,因此也延续了用户权限的体系。

worker_processes: 配置工作进程的数量,一般可以根据逻辑cpu 内核数来定。

http 虚拟服务

一个 nginx 实例,允许存在多个服务,我们在 http { } 之内,加入 server {} 来完成服务添加,nginx 还提供了更便于维护的方式 include 指令,我们后面在详聊

server {
    listen 8001;
    server_name demo.com;
    
    location / {
        root /var/www/html;
    }
}

可以根据你的需要,在一个nginx 实例中配置多个不同用途的服务。

参看官网手册: 待续

include 指令

include 指令的作用和 C 语言中的 include 类似,直接将被引用的文件内容原封不动的复制进来,简单直接。

基于以上简单直接的功能,include 指令在引入不同的配置文件是,需要考虑: 引入的内容,不能破坏 nginx.conf 原有的结构,所以 include 所引入的内容一般是形如:

server {
...
}

server {
...
}

的内容。

我们总结一下 include 的用法就是,include 会直接复制被引用文件的内容到引用文件中,所以在使用的过程中,我们需要根据 include 所处的位置,来决定被引用文件的内容。
你既可以在 http {} 中引入 server {},也可以直接在 nginx.conf 中引入 http {}
include 功能强大,怎么使用取决于你想怎样管理好 nginx.conf 配置文件了。
我个人推荐采取,模块化的思路,降低每一层配置文件的复杂度,通过文件夹结构来管理不同用途的配置文件,最后汇总到 nginx.conf 中。

HTTP 反向代理

nginx 的 HTTP 反向代理(后面简称反向代理)的作用是,为处于后方的 HTTP 服务,提供一个前方 HTTP 网关。
你可以在反向代理中,进行负载均衡,SSL,URL 重写等处理,所需要做的只是配置好一个前台 nginx 服务器。

server {
    
}

参考:

nginx documentation

NGINX Docs | Admin Guide

Nicholas X.

山穷水复疑无路,柳暗花明又一村