说明:
扩展属性add 为在刚刚安装好nginx后最原始的配置文件中添加的属性,同时也是实际运维工作中需要进行配置的一些属性。
# nginx安装后最原始的配置文件,通常分为3块:全局区、events区、http区
# 全局区:
# 运行Nginx的用户/用户组,window下不指定
#user nobody;
# 工作进程数,通常设为CPU数量或者2倍的CPU数量。
worker_processes 1;
# 全局错误日志路径
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
# 进程标识符pid:存放路径
#pid logs/nginx.pid;
# 扩展属性add:一个进程能打开的文件描述符最大值,理论上=最多能打开的文件数除以进程数,但nginx负载并不是完全均衡的,所以建议最好=最多能打开的文件数。
# 可执行 sysctl -a | grep fs.file 查看linux文件描述符
#worker_rlimit_nofile 65535;
# 事件区
events {
# 扩展属性add:使用epoll的I/O模型
# 说明:
# 1、epoll是多路复用IO(I/O Multiplexing)中的一种方式;
# 2、仅适用linux2.6以上的内核,可大大提高nginx的性能;
# 3、linux建议epoll,FreeBSD建议kqueue,window下不指定。
#use epoll;
# 单个工作进程(worker_processes)最大并发连接数
# 说明:
# 1、尽量大,但别把CPU跑到100%;
# 2、最大并发连接数 = 连接数 * 进程数;
# 3、每个进程允许的最多连接数,理论上就是每台nginx服务器的最大连接数。
worker_connections 1024;
# 扩展属性add:客户端请求头的缓冲区大小
# 说明:
# 1、可根据系统的分页大小来设置;
# 2、一般单个请求头的大小不会超过1k,不过正常的系统分页都要大于1k,因此这里可设置为分页大小。
#client_header_buffer_size 4k;
}
# http区
http {
# 设置mime类型,类型由mime.type文件定义
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"';
# 设置日志文件路径
# 说明:记录哪些用户,哪些页面以及用户浏览器、ip和其他的访问信息等信息
#access_log logs/access.log main;
#access_log logs/access.404.log log404;
#扩展属性add:服务器名字的hash表大小
#server_names_hash_bucket_size 128;
# 扩展属性add:配置客户端请求头的缓冲区大小
# 说明:
# 1、nginx默认会用client_header_buffer_size这个buffer来读取header值,如果header过大,会用large_client_header_buffers来读取;
# 2、a.HTTP头设置过小或Cookie过大,则会报400错误:nginx 400 bad request;b.HTTP头超过buffer,则会报414错误:URI Too Long;
# 3、nginx接受最长的HTTP头部大小必须比其中一个buffer大,否则就会报400错误:Bad Request;
# 4、number size:缓冲区的数量 每个缓冲区的大小。
#client_header_buffer_size 32k;
#large_client_header_buffers 4 32k;
# 扩展属性add:客户端请求体的缓冲区大小
#client_body_buffer_size 8m;
# 扩展属性add:隐藏ngnix版本号
#server_tokens off;
# 扩展属性add:忽略不合法的请求头
#ignore_invalid_headers on;
# 扩展属性add:让 nginx 在处理自己内部重定向时不默认使用 server_name设置中的第一个域名
#server_name_in_redirect off;
# 开启高效文件传输模式
# 说明:
# 1、on 开启 off 关闭;
# 2、sendfile 指令指定nginx是否调用sendfile函数(zero copy 方式)来输出文件,以减少 CPU 开销;
# 3、对于普通应用,必须设为on;
# 4、如果有进行下载的磁盘IO重负载的应用,则可设置为off,以此平衡网络I/O和磁盘的I/O和降低系统负载;
# 5、如果图片显示不正常,则把这个设置成off 。
sendfile on;
# 是否禁用 Nagle 算法
# 说明:
# 1、on 禁用Nagle算法,允许 Nginx 立即发送数据包;
# 2、off 启用Nagle算法,延迟发送数据包;
# 3、配置:可在http、server 或 location 块中配置,通常建议在http块中全局设置为 on,除非有特定需求需要在某些 location 中关闭它;
# 4、应用:
# a、测试环境中设置为off,进行压力测试和性能测试,以评估其对性能的影响;
# b、结合 tcp_nodelay 和 sendfile 等指令使用,进一步优化网络性能
# 5、Nagle算法:是一种用于改善小包传输效率的算法,它会延迟发送较小的数据包直到有足够的数据或足够的时间间隔后才一起发送。在某些情况下,这可能会导致延迟,特别是在需要快速响应的场景中。
#tcp_nopush on;
# 扩展属性add:是否禁用 TCP 的延迟确认机制
# 说明:
# 1、on 启用,即禁用 TCP 的延迟确认机制,减少延迟,增加小包的数量,提高响应速度和并发,适用实时性高的通信场景,如游戏、直播等;
# 2、off 禁用,即启用 TCP 的延迟确认机制,增加通信的延时,减少并发,提高带宽利用率,适用高延时、数据量大的通信场景。
tcp_nodelay on;
# 长连接的超时时间,单位:秒
# 说明:
# 1、格式:keepalive_timeout time [header_timeout],如keepalive_timeout 60s; 或 keepalive_timeout 60s 5s;
# 2、time:指定连接保持活动状态的最长时间,如果在这个时间内没有新的请求,则连接将被关闭
# 3、header_timeout(可选):在读取请求头部的超时时间,如果指定了 header_timeout,Nginx 将在等待请求头的这段时间后关闭连接,即使总的 keepalive_timeout 时间还没到。
keepalive_timeout 65;
# 是否开启gzip压缩
# 说明:
# 1、on 开启 off 关闭;
# 2、on 可降低网站带宽消耗,并同时提升访问速度。
#gzip on;
# 扩展属性add:最小压缩大小
#gzip_min_length 1k;
# 扩展属性add:压缩缓冲区
#gzip_buffers 4 16k;
# 扩展属性add:压缩版本
#gzip_http_version 1.0;
# 扩展属性add:压缩等级
#gzip_comp_level 2;
# 扩展属性add:压缩类型
#gzip_types text/plain text/css text/xml text/javascript application/json application/x-javascript application/xml application/xml+rss;
# 扩展属性add:对于某些特定请求的响应,禁用gzip压缩
# 说明:
# 1、语法:gzip_disable [regex]; regex 为正则表达式,用于匹配用户代理(User-Agent)或其他请求头字段(如:Accept-Encoding、Via等);
# 2、示例:
# a、IE1~6版本中,请求的响应不会被gzip压缩:gzip_disable "MSIE [1-6]\.";
# b、Opera 12中,请求的响应不会被gzip压缩:gzip_disable "Opera/12.00";
gzip_disable "MSIE [1-6]\.";
# 扩展属性add:配置负载均衡
# 说明:
# 1、max_fails 为允许请求失败的次数,默认为1;
# 2、weight 为轮询权重,根据不同的权重分配可以用来平衡服务器的访问率。
# upstream myServer{
# server 192.168.81.129:8080 max_fails=3 weight=2;
# server 192.168.81.129:8081 max_fails=3 weight=4;
# }
# 配置虚拟主机
server {
# 监听服务端口
listen 80;
# 服务主机 ip/域名,多个用空格隔开
#server_name 192.168.81.129;
server_name localhost;
# 配置字符集
#charset koi8-r;
# 配置本虚拟主机的访问日志
#access_log logs/host.access.log main;
# 配置反向代理,将localhost的所有请求全部转发到upstream中定义的目标服务器去
location / {
# 扩展属性add:代理服务器,注意域名必须与upstream配置的域名一致,才能转发。
# proxy_pass http://myServer;
# 扩展属性add:配置代理连接超时时间(s),即nginx跟后端服务器连接的超时时间
#proxy_connect_timeout 20;
# 扩展属性add:配置代理发送超时时间(s),即后端服务器数据回传的超时时间
#proxy_send_timeout 300;
# 扩展属性add:配置代理接收超时时间(s),即后端服务器响应的超时时间
#proxy_read_timeout 300;
# 扩展属性add:允许客户端请求的最大单文件字节数
#client_max_body_size 10m;
# 扩展属性add:缓冲区代理缓冲用户端请求的最大字节数
#client_body_buffer_size 128k;
# 扩展属性add:配置代理服务器(nginx)请求头的缓冲区大小,默认值是 4k 或者 8k
#proxy_buffer_size 4k;
# 扩展属性add:proxy_buffers缓冲区,默认值是 256 8k,网页大小平均在32k以下时
#proxy_buffers 4 32k;
# 扩展属性add:高负荷下缓冲大小(建议为proxy_buffers*2),用于后端数据量过大时,装满busy缓存时就立即传给客户端
#proxy_busy_buffers_size 64k;
# 扩展属性add:配置缓存文件夹大小,大于设定值时将从upstream服务器传输
#proxy_temp_file_write_size 64k;
# 配置服务器默认的网站根目录位置,可自定义
root html;
# 配置默认首页面,多个用空格隔开
index index.html index.htm;
}
# 配置404错误提示页面
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
# 配置50x错误提示页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# 扩展属性add:静态文件,nginx自己处理
# location ~ ^/(images|javascript|js|css|flash|media|static)/ {
# 有效期:三十天,如果频繁更新,则可设置的小一点
# expires 30d;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# 禁止访问 .htxxx文件
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}