nginx.conf配置文件详解
2020-03-08 本文已影响0人
文心武士
#定义Nginx运行的用户和用户组。默认用户是nobody。
user nobody;
#Nginx进程数。默认1。
#一般一个进程足够了,可以把连接数设得很大。
#如果有SSL、gzip这些消耗CPU的工作,而且是多核CPU的话,可以设为和CPU的数量一样。
#或者要处理很多小文件,且文件总大小比内存大很多的时候,也可以把进程数增加。
worker_processes 4;
#配置nginx多核cpu。0001表示启用第一个CPU内核,0010表示启用第二个CPU内核,依此类推。
worker_cpu_affinity 00000001 00000010 00000100 00001000;
#Nginx错误日志。错误日志级别: debug | info | notice | warn | error | crit | alert | emerg
error_log /var/log/nginx/error.log info;
#进程文件
pid /var/run/nginx.pid;
#配置Nginx worker进程最大打开文件数
#理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除
worker_rlimit_nofile 65535;
#全局配置
events
{
#事件驱动模型。参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ];
#epoll模型适用于Linux内核2.6版本及以后的系统
use epoll;
#单个进程最大连接数(最大连接数=连接数*进程数)
worker_connections 65535;
#设置网路连接序列化,防止惊群现象发生,默认为on
accept_mutex on;
#设置一个进程是否同时接受多个网络连接,默认为off
multi_accept on;
#客户端请求头部的缓冲区大小。
#根据系统分页大小设置,一般一个请求头的大小不会超过1k,由于一般系统分页都要大于1k,所以设置为系统分页大小。
#查看系统分页可以使用 getconf PAGESIZE命令
client_header_buffer_size 4k;
#为打开文件指定缓存,默认是没有启用的。
#max指定缓存最大数量,建议和打开文件数(worker_rlimit_nofile)一致;
#inactive是指经过多长时间文件没被请求后删除缓存
open_file_cache max=65535 inactive=60s;
#指多长时间检查一次缓存的有效信息。如果有一个文件在inactive时间内一次没被使用,它将被移除
open_file_cache_valid 60s;
#open_file_cache指令中的inactive参数时间内文件的最少使用次数。
#如果超过这个数字,文件描述符一直是在缓存中打开的,如果有一个文件在inactive时间内一次没被使用,它将被移除。
open_file_cache_min_uses 1
}
#设定http服务器
http
{
#文件扩展名与文件类型映射表
include mime.types;
#默认文件类型
default_type application/octet-stream;
#默认编码
charset utf-8;
#服务器名字的hash表大小
server_names_hash_bucket_size 128;
#设置NGINX能处理的最大请求主体大小。 如果请求大于指定的大小,则NGINX返回HTTP 413(Request Entity too large)错误。
#如果服务器处理大文件上传,则该指令非常重要。默认为1m。
client_max_body_size 8m;
#设置用于请求主体的缓冲区大小。 默认情况下,该指令为32位系统设置一个8k缓冲区,为64位系统设置一个16k缓冲区。
client_body_buffer_size 16k;
#请求头的缓冲区的大小
client_header_buffer_size 1m;
#读取大型客户端请求头的缓冲区的最大数量和大小
large_client_header_buffers 4 64k;
# 开启高效文件传输模式.sendfile指令指定nginx是否调用sendfile函数来输出文件。
sendfile on;
# 防止网络阻塞
tcp_nopush on;
# 防止网络阻塞
tcp_nodelay on;
# 设置客户端连接保持活动的超时时间,在超过这个时间后服务器会关闭该链接。(单位s)
keepalive_timeout 120;
# 开启目录列表访问,合适下载服务器,默认关闭.
# 显示目录
autoindex on;
# 显示文件大小 默认为on,显示出文件的确切大小,单位是bytes 改为off后,显示出文件的大概大小,单位是kB或者MB或者GB
autoindex_exact_size on;
# 显示文件时间 默认为off,显示的文件时间为GMT时间 改为on后,显示的文件时间为文件的服务器时间
autoindex_localtime on;
# FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
# gzip模块设置
#开启gzip压缩输出
gzip on;
#允许压缩的页面的最小字节数。默认是0。不管页面多大都进行压缩。
#页面字节数从header头的content-length中获取。建议设置成大于1k的字节数
gzip_min_length 1k;
#表示申请4个单位为16k的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果
gzip_buffers 4 16k;
#压缩版本。默认1.1
gzip_http_version 1.1;
#压缩等级。1压缩比最小,处理速度快;9压缩比最大,比较消耗cpu资源,处理速度最慢。
gzip_comp_level 2;
#压缩类型
gzip_types text/plain application/x-javascript text/css application/xml;
#选项可以让前端的缓存服务器缓存经过gzip压缩的页面
gzip_vary on;
#upstream
#轮询: 默认,每个请求按照时间顺序轮流分配到不同的后端服务器,如果某个后端服务器挂掉能自动剔除。
#weight: 指定轮询比率,weight和访问几率成正比,主要应用于后端服务器异质的场景下。
#ip_hash: IP散列,每个请求按照访问 Ip的hash结果分配,这样每个访客会固定访问一个后端服务器,可以解决 session 一致问题
#fair(第三方): 公平地按照后端服务器的响应时间(rt)来分配请求,响应时间(rt)小的后端服务器优先分配请求。
#url_hash(第三方): 与ip_hash类似,但是按访问url的hash分配请求,每个url定向到同一个后端服务器,主要应用于后端服务器为缓存的场景下
upstream upstream-name
{
#ip_hash
server 127.0.0.1:9001 weight=1;
server 127.0.0.1:9002 weight=1;
server 127.0.0.1:9003 weight=2;
}
#虚拟主机的配置
server {
listen 80;
server_name 127.0.0.1;
proxy_set_header Host $http_host;
location /api {
proxy_pass http://upstream-name;
}
}
#虚拟主机的配置
server
{
# 监听端口
listen 80;
# 域名可以有多个,用空格隔开
server_name example.com;
# HTTP 自动跳转 HTTPS
rewrite ^(.*) https://$server_name$1 permanent;
}
#虚拟主机的配置
server
{
# 监听端口 HTTPS
listen 443 ssl;
server_name example.com;
ssl on;
# 配置域名证书
ssl_certificate /etc/ssl/certificate.crt;
ssl_certificate_key /etc/ssl/private.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
index index.html;
root /data/html/;
location /
{
proxy_pass 127.0.0.1:9000;
}
# 定义本虚拟主机的访问日志
access_log /var/log/nginx/access.log access;
}
}