NGINX配置详解、负载均衡、http模块

以我刚装的nginx 1.17.10 示例

1.nginx 全局配置


user  nobody; 
#主模块命令 指由哪个账户运行  默认是nobody
worker_processes  1; 
# worker_processes   nginx 要开启的进程数 每个进程平均耗费10MB-12MB 内存一般一个即可  多个CPU 就设置和CPU一样的进程数 即可

#error_log  logs/error.log; 
#error_log  logs/error.log  notice;

#error_log   日志命令来定义全局错误日志文件   最后的参数表示 等级  
#debug,info ,notice warm error crit   我写的是从上至下  debug 最详细

#error_log  logs/error.log  info;

#pid        logs/nginx.pid; # 这里指进程ID 存储文件位置


#events   用来设定nginx 工作模式 以及连接上限数
events { 
    use epoll;
    #use 事件命令模块 指定nginx 工作模式 select、poll、kqueue、epoll、rtsig、/dev/poll 其中 select和poll都是标准工作模式   kqueue和epoll 是高效工作模式 kqueue用于BSD 系统 epoll 用于Liunx 系统  对于liunx epoll 是首选 

    worker_connections  1024; #定义每个进程最大连接数   
#所以nginx 客户端连接数 = worker_processes*worker_connections   作为反向代理时 客户端连接数 =worker_processes*worker_connections/4   同时 进程最大连接数受Liunx 限制 在执行系统命令 
  ulimit -n 65536 后 worker_connections  才会生效       
}

2.HTTP 服务器配置


http { #服务器配置
    include       mime.types;
 #include主模块指令 实现对配置文件所包含的文件的设定,可以减少主配置文件的复杂度

    default_type  application/octet-stream; 
#default_type  属于http 核心模块命令 这里默认设定类型为二进制流  也就是当文件类型未定义的时候使用这种方式,例如我们没有配置PHP 环境时 nginx 就不予以解析,出现下载PHP 文件的情况


    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    #上面一段代码 实现掉容重格式的设定
    #log_format 是HttpLog 模块指令 用于指定nginx 日志输出格式 main 为此日志输出格式的名称 可以在下面 access_log   引用 大意如下
    #远程用户[本地时间]"请求" '
    #'状态体字节发送http引用" '
    #“http用户代理”“http x转发给”;
   
    #
    #access_log  logs/access.log  main;
    #access_log  访问日志
   
    sendfile        on;
    #sendfile     用于开启高效的文件传输模式  将tcp_nopush  和 tcp_nodely     设置为on 防止网络阻塞
    # tcp_nopush     on;
    #keepalive_timeout  0;
   #用于设置客户端连接保持获得的超时时间,在超过这个时间之后,服务器会自动关闭改连接
    keepalive_timeout  65;
#还有一些命令用的较少 但是还是写进去 我的配置文件里面暂时没用上  供学习
client_max_body_size  20m
#client_max_body_size 允许客户端请求的最大的单个文件字节数
client_header_buffer_size  32
#client_header_buffer_size  用来设置允许客户端请求头的 headerbuffer 大小 
large_client_header_buffers   4  128k
#large_client_header_buffers  用来指定客户端请求中较大的消息头的缓存最大数量和大小 4为 个数 128k 为大小 最大缓存为4个128KB
#keepalive_timeout 60 用于设置客户端连接保持活动的超时时间这个时间之后服务器会自动关闭连接
client_header_tineout 10 设置 客户端请求头读取超时时间,如果超过这个时间 客户端没有发送任何数据,nginx 会返回408
cliebt_body_timeout 10 设置客户端请求主体读取超时时间,默认值为60 没有数据会返回408
send_timeout 10  用于指定响应客户端的超时时间 这个超时仅限于连接获得之间的时间,如果超过这个时间,客户端没有任何获得,nginx 将会关闭
s


   
  

3.httpGzip 模块配置

这个模块支持在线实时压缩输出数据流



: gzip             on;
: gzip_min_length  1000;
: gzip_proxied     expired no-cache no-store private auth;
: gzip_types       text/plain application/xml;
#内置变量 $gzip_ratio 可以获取到gzip的压缩比率


gzip on|off    开启或者关闭gzip模块

gzip_buffers 4 4k/8k

设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。 例如 4 4k    代表以4k为单位,按照原始数据大小以4k为单位的4倍申请内存。 4 8k    代表以8k为单位,按照原始数据大小以8k为单位的4倍申请内存。

如果没有设置,默认值是申请跟原始数据相同大小的内存空间去存储gzip压缩结果。

 gzip_comp_level 1..9

gzip压缩比,1 压缩比最小处理速度最快,9 压缩比最大但处理最慢(传输快但比较消耗cpu)。

gzip_min_length 0
设置允许压缩的页面最小字节数,页面字节数从header头中的Content-Length中进行获取。

默认值是0,不管页面多大都压缩。

建议设置成大于1k的字节数,小于1k可能会越压越大。 即: gzip_min_length 1024

gzip_http_version 1.1

识别http的协议版本。由于早期的一些浏览器或者http客户端,可能不支持gzip自解压,用户就会看到乱码,所以做一些判断还是有必要的。 注:21世纪都来了,现在除了类似于百度的蜘蛛之类的东西不支持自解压,99.99%的浏览器基本上都支持gzip解压了,所以可以不用设这个值,保持系统默认即可。


gzip_proxied off

Nginx作为反向代理的时候启用,开启或者关闭后端服务器返回的结果,匹配的前提是后端服务器必须要返回包含"Via"的 header头。

off - 关闭所有的代理结果数据的压缩
expired - 启用压缩,如果header头中包含 "Expires" 头信息
no-cache - 启用压缩,如果header头中包含 "Cache-Control:no-cache" 头信息
no-store - 启用压缩,如果header头中包含 "Cache-Control:no-store" 头信息
private - 启用压缩,如果header头中包含 "Cache-Control:private" 头信息
no_last_modified - 启用压缩,如果header头中不包含 "Last-Modified" 头信息
no_etag - 启用压缩 ,如果header头中不包含 "ETag" 头信息
auth - 启用压缩 , 如果header头中包含 "Authorization" 头信息
any - 无条件启用压缩

gzip_types text/html

匹配MIME类型进行压缩,(无论是否指定)"text/html"类型总是会被压缩的。

4.负载均衡配置upstream模块

这个模块提供一个简单方法来实现在轮询和客户端IP之间的后端服务器负荷平衡。

upstream backend  {
  server backend1.example.com weight=5;
  server backend2.example.com:8080;
  server unix:/tmp/backend3;
}
 
server {
  location / {
    proxy_pass  http://backend;
  }
}

 

你可能感兴趣的:(服务器配置)