root@ubuntu:~$ grep process /proc/cpuinfo | wc -l #确认CPU的核心数量
root@ubuntu:~$ vim /etc/nginx/nginx.conf
user www-data;
#worker_processes auto;#可以指定启动的固定nginx进程数,或使用auto,auto是启动与当前CPU 线程相同的进程数,如CPU是四核八线程的就启动八个进程的Nginx工作进程。
#四个线程CPU的配置:
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
#八个线程CPU的配置:
#worker_processes 8;
#worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
pid /run/nginx.pid; #进程pid存放位置
include /etc/nginx/modules-enabled/*.conf;
#events设置块,工作模式及连接数上限:主要影响nginx服务器与用户的网络连接,比如是否允许同时接受多个网络连接,使用哪种事件驱动模型处理请求,每个工作进程可以同时支持的最大连接数,是否开启对多工作进程下的网络连接进行序列化等。
events {
use epoll;#epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
worker_connections 768; #设置nginx可以接受的最大并发
# multi_accept on;
}
#http块:缓存、代理和日志格式定义等绝大多数功能和第三方模块都可以在这设置,http块可以包含多个server块,server块中可以包含多个location块
http {
sendfile on;#开启高效传输模式
tcp_nopush on; #激活tcp_nopush参数可以允许把httpresponse header和文件的开始放在一个文件里发布,积极的作用是减少网络报文段的数量防止网络阻塞
tcp_nodelay on;#激活tcp_nodelay,内核会等待将更多的字节组成一个数据包,从而提高I/O性能防止网络阻塞
keepalive_timeout 65; #连接超时时间,单位是秒
types_hash_max_size 2048;
server_tokens off; #隐藏响应header和错误通知中的版本号
#autoindex on; #开启目录列表访问,适合下载服务器,默认关闭。
# server_names_hash_bucket_size 64; #服务器名字的hash表大小
# server_name_in_redirect off;
#limit模块,可防范一定量的DDOS攻击
#用来存储session会话的状态,如下是为session分配一个名为one的10M的内存存储区,限制了每秒只接受一个ip的一次请求 1r/s
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
limit_conn_zone $binary_remote_addr zone=addr:10m;
include /etc/nginx/mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream;#默认文件类型
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
#error_log支持的日志级别:
#语法:
#error_log file [ debug | info | notice | warn | error | crit ] | [{ debug_core | debug_alloc | debug_mutex | debug_event | debug_http | debug_mail | debug_mysql } ]
#日志级别 = 错误日志级别 | 调试日志级别; 或者
#日志级别 = 错误日志级别;
#错误日志的级别: emerg, alert, crit, error, warn, notic, info, debug,
#调试日志的级别: debug_core, debug_alloc, debug_mutex, debug_event, debug_http, debug_mail, debug_mysql
#error_log 指令的日志级别配置分为错误日志级别和调试日志级别,错误日志只能设置一个级别,而且错误日志必须书写在调试日志级别的前面,另外调试日志可以设置多个级别,其他配置方法可能无法满足需求。
##
# Gzip Settings
##
gzip on; #开启gzip压缩功能
gzip_min_length 1k;#设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认值是0,表示不管页面多大都进行压缩。建议设置成大于1K。如果小于1K可能会越压越大。
gzip_buffers 4 16k;#压缩缓冲区大小。表示申请4个单位为16K的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果。
gzip_http_version 1.0;#压缩版本(默认1.1,前端为squid2.5时使用1.0)用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可。
gzip_comp_level 6;#压缩比率。用来指定GZIP压缩比,1压缩比最小,处理速度最快;9压缩比最大,传输速度快,但处理最慢,也比较消耗cpu资源。
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/javascript text/xml application/xml+rss;#用来指定压缩的类型,“text/html”类型总是会被压缩
gzip_vary off;#vary header支持。该选项可以让前端的缓存服务器缓存经过GZIP压缩的页面,例如用Squid缓存经过Nginx压缩的数据。
## gzip_vary on;
# gzip_proxied any;
## gzip_comp_level 6;
## gzip_buffers 16 8k;
## gzip_http_version 1.1;
## gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
#FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。下面参数看字面意思都能理解。
fastcgi_connect_timeout 300; #指定连接到后端fastCGI的超时时间
fastcgi_send_timeout 300; #向fastCGI请求的超时时间,这个值是指已经完成两次握手后向 fastCGI传送的超时时间
fastcgi_read_timeout 300; #接收fastCGI应答的超时时间,这个值已经完成两次握手后接收 fastCGI应答的超时时间
fastcgi_buffer_size 64k; #指定读取fastCGI应答第一部分需要用多大的缓冲区,一般第一部分应答不会超过1k,一般设置为64k
fastcgi_buffers 4 64k; #指定本地需要用多少和多大的缓冲区来缓冲fastCGI的应答
fastcgi_busy_buffers_size 128k; #默认值是fastcgi_buffers的两倍
fastcgi_temp_file_write_size 128k; #在写入fastcgi_temp_path是用多大的数据块,默认值是 fastcgi_buffers两倍
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
#mail {
# # See sample authentication script at:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen localhost:110;
# protocol pop3;
# proxy on;
# }
#
# server {
# listen localhost:143;
# protocol imap;
# proxy on;
# }
#}