外观
Nginx 配置
以 Ubuntu 系统为例,Nginx 的配置文件位于 /etc/nginx/nginx.conf 中,此文件中的 include 语法还会导入其他配置文件。
Nginx 配置的语法与其他面向对象的编程语言语法类似,也有顶层作用域和子作用域。
# 全局设置
http {
# 服务器
upstream { # 负载均衡设置
}
server {
# 主机设置
location {
# URL 匹配规则
}
}
}全局配置块
全局配置块位于配置文件的最顶部,通常只包含在 nginx.conf 文件中,用于规定 Nginx 运行的一些参数,比如进程数量、运行用户等。
| 配置 | 作用 |
|---|---|
work_processes | 指定启动的工作进程数量 |
error_log | 定义错误日志文件的位置和日志级别 |
pid | 指定存储 Nginx 进程 ID 的文件路径 |
worker_connections | 指定每个工作进程能同时处理的最大连接数 |
示例:
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;事件配置块
事件配置块通常紧随全局配置块之后。该配置块控制 Nginx 如何处理网络连接、事件驱动机制、连接的最大数量等。
| 配置 | 作用 |
|---|---|
worker_connections | 指定每个工作进程可以同时打开的最大连接数 |
use | 指定使用的事件驱动模型(如 epoll、kqueue 等)。 |
events {
worker_connections 1024;
use epoll;
}HTTP 配置块
HTTP 配置块是 Nginx 中最常见的配置块之一,它用于配置与 HTTP 服务相关的所有内容。HTTP 配置块包含服务器的 HTTP 级别的配置,如请求处理、反向代理、负载均衡、缓存、SSL 等。
| 配置 | 作用 |
|---|---|
server | 定义虚拟主机(即独立的 Web 服务器实例) |
gzip | 配置 HTTP 响应压缩 |
include | 引入其他配置文件 |
log_format | 定义日志格式 |
http {
include 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;
}服务器配置块(Server Block)
在 HTTP 配置块内,server 配置块定义了一个虚拟主机的配置。每个 server 配置块通常对应一个域名或 IP 地址,用来处理指定域名或 IP 地址的请求。
| 配置 | 作用 |
|---|---|
server_name | 定义服务器的域名或 IP 地址 |
listen | 指定服务器监听的端口 |
location | 定义特定 URI 的处理规则 |
root | 定义该虚拟主机的根目录 |
index | 定义默认的索引文件 |
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
index index.html;
}
}位置配置块(Location Block)
位置配置块是 server 配置块的一个子集,用于匹配请求的 URI 并指定该 URI 的具体处理方式。location 配置块通常用于指定静态文件位置、重定向规则、代理设置等。
| 配置 | 作用 |
|---|---|
root | 指定该 location 的根目录 |
proxy_pass | 定义请求转发到的后台服务器 |
rewrite | URL 重写规则 |
fastcgi_pass | 定义 FastCGI 请求的处理 |
location /images/ {
root /var/www/static;
}
location /api/ {
proxy_pass http://backend-server;
}位置匹配规则
location 配置块可以使用不同的匹配方式来选择处理请求。匹配规则的顺序如下:
- 精确匹配(
= /path) - 前缀匹配(
/path) - 正则表达式匹配(
~或~*,~是大小写敏感,~*是大小写不敏感)
location = /about {
# 精确匹配 /about 路径
}
location /images/ {
# 匹配以 /images/ 开头的路径
}
location ~* \.jpg$ {
# 匹配 .jpg 文件,忽略大小写
}其他配置块(如 Mail、Stream)
除了 http 配置块,Nginx 还可以配置其他服务,如邮件代理服务(mail)和 TCP/UDP 流量代理服务(stream)。这些配置块在 Nginx 支持的特定功能中使用,通常涉及到负载均衡和代理设置。