以下是默认配置文件中的内容,并做了简单的调整:
# Nginx 默认运行 worker 的用户为 nobody,而 Master 用户为 root
user nobody;
#工作进程,也就是 worker 数量,一般为 CPU 核数,可以写 auto
worker_processes 1;
# 默认错误日志路径,级别
error_log logs/error.log info;
# 默认 PID 文件保存位置
pid logs/nginx.pid;
# 一个进程打开的最大文件数,建议与 ulimit -n 一致
worker_rlimit_nofile 65535;
events {
# epoll 为一种多路复用 IO 模式,可以提升性能
use epoll;
# 单个进程最大连接数
worker_connections 65535;
}
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 logs/access.log main;
# 高效文件传输,普通设置为 on,下载服务或者高 IO 服务设置为 off
sendfile on;
# 长连接超时时间,单位是秒
keepalive_timeout 65;
# gzip 压缩输出
# gzip on;
# 虚拟主机
server {
# 监听端口
listen 80;
# 域名,多个空格隔开
server_name localhost;
# 单独的日志
# access_log logs/host.access.log main;
# error_log logs/error.log;
# 匹配规则
location / {
# 项目目录和索引文件
root html;
index index.html index.htm;
}
# 404 返回页面
# error_page 404 /404.html;
# 其他错误代码返回页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
从上面的配置中我们需要知道:
1. nginx 进程由 master / worker 组成,master 通过 root 用户运行,worker 通过配置中用户运行,默认 nobody。
2. 并发总数 = worker_processes * worker_connections,但如果是反向代理需要除以 4。
3. worker_connections 受制于内存和 IO,也就是机器的性能。
4. 通过 cat /proc/sys/fs/file-max 查看服务器可以打开文件句柄数,一般 1G 内存为 10 万左右。
5. worker_rlimit_nofile 需要大于等于 worker_connections,而且在系统优化时应该调大 ulimit 的值。
6. error log 可以在 http 外层配置,因为启动 nginx 也会报错写日志,但 access 日志只能在 http 的下级配置中。
7. http 端口为 80,https 端口为 443。