Nginx配置文件是Nginx服务器的核心,用于控制其行为和服务功能。下面是对Nginx配置文件和配置项的解释:
1. 主配置文件结构
Nginx的主配置文件通常位于/etc/nginx/nginx.conf
或/usr/local/nginx/conf/nginx.conf
,它由几个主要部分组成:
全局块
- user: 指定Nginx worker进程运行的用户和组。
- worker_processes: 设置Nginx可以使用的worker进程数量,根据CPU核心数进行设置较为常见。
- error_log: 定义错误日志的路径和级别。
- pid: 指定Nginx的主进程PID文件存放路径。
- worker_rlimit_nofile: 限制单个worker进程可以打开的最大文件描述符数量。
events块
- use: 指定事件驱动模型,如epoll(Linux)、kqueue(FreeBSD)。
- worker_connections: 每个工作进程能同时处理的最大连接数。
- multi_accept: 是否允许一个工作进程同时接受多个新连接。
2. HTTP块
包含与HTTP服务相关的全局设置和所有虚拟主机(server blocks)配置。
- include: 引入其他配置文件,如mime.types定义MIME类型。
- default_type: 设定默认的MIME类型,当无法识别文件类型时使用。
- sendfile: 开启高效文件传输模式。
- keepalive_timeout: 设置长连接超时时间。
Server块
- listen: 监听的端口或地址。
- server_name: 服务器域名或IP,用于虚拟主机配置。
- root: 指定网站根目录。
- index: 默认首页文件列表。
Location块
- location [uri]: 根据URI匹配来定义不同的访问控制和处理方式。
-
~
: 正则表达式匹配。 -
=
: 精确匹配。 -
^~
: 前缀匹配,优先级高于正则表达式。 -
/
: 通用匹配,作为最后的匹配条件。 -
proxy_pass: 反向代理设置,将请求转发到后端服务器。
-
rewrite: URL重写规则。
-
try_files: 尝试文件是否存在,不存在时执行指定操作。
-
3. Upstream块
- 用于定义一组服务器,常用于负载均衡配置。
4. Log_format与access_log
- log_format: 自定义日志格式。
- access_log: 指定访问日志的路径和格式。
配置实例
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}