Nginx 配置文件整体说明
一个典型的 Nginx 配置文件,整体上由三部分组成:
- 全局块:
配置影响 Nginx 全局指令。一般有运行 Nginx 服务器的用户组,Nginx 进程 pid 存放路径,日志存放路径,配置文件引入,允许生成 worker process 数量等。 - events块:
配置影响 Nginx 服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。 - http块:
可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
以下是一个典型的 Nginx 配置文件 nginx.conf:
# 全局配置 user www www; worker_processes 8; pid /usr/local/nginx/logs/nginx.pid; worker_rlimit_nofile 65535; # events块配置 events { use epoll; worker_connections 65535; } # http块配置 http { include mime.types; default_type application/octet-stream; client_header_buffer_size 32k; tcp_nopush on; tcp_nodelay on; keepalive_timeout 120; # 负载均衡/反向代理配置 upstream lb.codebaoku.com { server 192.168.80.121:80 weight=3; server 192.168.80.122:80 weight=2; server 192.168.80.123:80 weight=3; } # 虚拟主机的配置 server { listen 80; server_name www.codebaoku.com codebaoku.com; index index.html; root /data/www/codebaoku; # 路由匹配配置1 location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ { expires 10d; } # 路由匹配配置2 location ~ .*.(js|css)?$ { expires 1h; } } }
其中,虚拟主机 server 段最为复杂,里面可以包含多个虚拟主机配置。以下范例中包含三个虚拟主机:www.codebaoku.com,static.codebaoku.com,examples.codebaoku.com。
http { # server1: www.codebaoku.com server { listen 80; server_name www.codebaoku.com; ...... } # server2: static.codebaoku.com server { listen 80; server_name static.codebaoku.com; ...... } # server3: examples.codebaoku.com server { listen 80; server_name examples.codebaoku.com; ...... } }
每一个虚拟主机里面,又可以可以包含多个 location 块。location 块用于配置请求的路由,也就是访问不同路径 Url 的配置信息。
以下范例中,配置了访问网站的图片和js、css文件的不同信息。
server { # 路由匹配配置1 location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ { expires 10d; } # 路由匹配配置2 location ~ .*.(js|css)?$ { expires 1h; } }
Nginx 配置文件 nginx.conf 的详细说明:#定义Nginx运行的用户和用户组:user www www; #nginx进程数,建议设置为等于CPU总核心数。worker_processes 8; #进程pid文件:pid /usr/local/nginx/logs/nginx.pid。