Skip to main content

nginx.conf 配置文件

· 4 min read
Zeffon Wu

Nginx 的核心配置文件 nginx.conf 的配置结构和指令语法

前文

想要使用好 Nginx,绕不开其核心配置文件的熟练掌握,以下主要是 nginx.conf 的配置结构和相关的指令语法 04-01-nginx.conf.png

正文

main 全局配置

main 配置影响 nginx 全局的指令。 一般有运行 nginx 服务器的用户组、允许运行的工作进行数 worker process、nginx 进程 pid 存放路径、日志存放路径,配置文件引入等。

  1. 设置 work 进程的用户,指的是 linux 中的用户,会涉及到 nginx 操作目录或文件的一些权限,默认是nobody
user root
  1. work 工作进程数设置,一般来说 CPU 有几个,就设置几个,或者设置 N-1 也可以
worker_processes 1;
  1. 设置 nginx 进程 pid
pid logs/nginx.pid
  1. nginx 日志级别(级别从左到右越来越大) debug -> info -> notice -> warn -> error -> crit -> alert -> emerg
  2. nginx 日志存放路径设置
error_log  logs/error.log;

events 工作模式配置

配置影响 nginx 服务器或与用户的网络连接。 有每个工作进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

events {
# 默认使用epoll(多路复用)
use epoll;
# 每个work工作进行允许连接的客户端最大连接数
worker_connections 10240;
}

http 指令块配置

http 是指令块,针对 http 网络传输的一些指令配置 在 http 模块中可以嵌套多个 server,配置相关代理、设置缓存、自定义日志(日志切割)等绝大多数功能和第三方模块的配置。 如外部配置文件引入、日志自定义、是否使用 sendfile 传输文件、连接超时时间、gzip 压缩等。

  1. 引入外部配置文件,提高可读性,避免单个文件配置过大
include /usr/local/nginx/conf/vhosts/*.conf;
  1. 自定义日志 |参数名|参数意义| | :----: | :----: | |romote_user|远程客户端用户名,一般为"-"| |request|请求 url 与 method| |body_bytes_send|响应客户端内容字节数| |http_user_agent|用户所使用的代理,一般都是浏览器| |$http_x_forwarded_for|通过代理服务器来记录客户端的 ip|
  2. sendfile 使用高效文件传输,提升传输性能。启用后才能使用 tcp_nopush,是指当数据表累计一定大小才发送,提高效率
sendfile      on;
tcp_nopush on;
  1. keepalive_timeout 设置客户端与服务端请求的超时时间,保证客户端多次请求的时候不会重复建立新的连接,节约资源损耗
keepalive_timeout 65;
  1. gzip 启用压缩,html/js/css 等静态资源压缩后传输会更快
gzip on;

server 模块配置

location 路由规则

server 可以在 http 指令块中设置多个虚拟主机

  • listen 监听端口
  • server_name localhost、ip、域名
  • location 请求路由映射、匹配拦截
  • root 请求位置
  • index 首页设置
server {
listen 8080;
server_name localhost;

location / {
root html;
index index.html index.htm;
}
}

upstream 集群 内网服务器