鉴于毕竟多数 Nginx 用户对基本配置项的理解几乎为 0,还是决定来写一些基础的东西。遂有了这个Nginx 基础教程
系列。本文介绍用 Nginx 建立一个网站所需要的最基本的配置项。
Nginx 的配置文件构成
Nginx 的默认配置文件一般为 nginx.conf
,这个文件内你需要写入 Nginx 的最基本的运行配置,这个文件也被称作 Nginx 的全局配置文件
。这个文件内的配置对整个 Nginx 生效,且实际上 Nginx 只会读取这个文件内包括的配置,它是 Nginx 的唯一配置文件,其它的配置文件都需要使用 include 来引入。
与之对应的,有另外一个概念,叫做站点配置文件
。这个文件一般可有可无。文件名可以随意,可以命名为例如website.conf
。如果要使用额外的配置文件,需要在全局配置文件 nginx.conf 的 http 段配置中写入下面这行,来将这个配置导入到 Nginx:
http {
...
include website.conf;
}
全局配置
上文已提到,nginx.conf 是全局配置文件。这个文件需要至少包括下列配置项:
# 运行 Nginx 的用户组和用户名。一般不建议使用 root 账户,可以另外创建一个 www www 用户
user www www;
# 运行 Nginx 的进程数,可以设置为 CPU 核心数。我建议指定为 auto 自动
worker_processes auto;
# 错误日志的生成路径和记录等级
error_log /home/nginx/logs/error.log crit;
# 运行 Nginx 的 pid 生成路径
pid /home/nginx/sbin/nginx.pid;
# 最大访问文件数限制
worker_rlimit_nofile 2048;
events
{
# Nginx 使用的事件模型,有其它值例如 kqueue 等。一般保持这个值为 epoll 即可
use epoll;
#单个 worker process 进程的最大并发链接数。所以 Nginx 最大总连接数 = [worker_processes * worker_connections]
worker_connections 2048;
}
http
{
# Nginx 的默认指定文件类型名称的配置文件
include mime.types;
# Nginx 的默认文件类型
default_type application/octet-stream;
# 导入你的站点配置文件
include website.conf;
}
站点配置
那么接下来就要写站点配置了,这里面包括了你要建立的网站的配置项。本文按照 HTTP 和 HTTPS 列举出两种最基本的站点配置。
HTTP
server
{
# Nginx 的监听端口,其实可以随意。这里只是因为 HTTP 站点访问默认是 80 端口
listen 80;
# 你的网站的文件的所在根路径,使用绝对路径
root /home/site;
# 访问地址未指定要访问的文件名时,默认访问的文件名
# 例如访问某网站首页,这个 index.php 就是首页的文件
index index.php;
# 访问日志的生成路径
access_log /home/nginx/access-log;
# 你网站要使用的域名
server_name example.example.com;
}
HTTPS
server
{
# Nginx 的监听端口,其实可以随意。这里只是因为 HTTPS 站点访问默认是 443 端口
listen 443;
# 你的网站的文件的所在根路径,使用绝对路径
root /home/site;
# 访问地址未指定要访问的文件名时,默认访问的文件名
# 例如访问某网站首页,这个 index.php 就是首页的文件
index index.php;
# 访问日志的生成路径
access_log /home/nginx/access-log;
# 你网站要使用的域名
server_name example.example.com;
# 下面是指定 SSL 的相关配置,均是必填项目
# 开启 SSL
ssl on;
# 使用的 TLS 版本
ssl_protocols TLSv1.1 TLSv1.2;
# SSL 站点证书的所在路径,使用绝对路径
ssl_certificate /home/crt/example.cer;
# SSL 站点证书密钥的所在路径,使用绝对路径
ssl_certificate_key /home/crt/example.key;
}