常用配置

html 关闭缓存, 资源开启缓存,开启 gzip
      
        worker_processes  1; # nginx要开启的进程数 据官方说法,一般开一个就够了 一般可以开4-8个

        events {
          worker_connections  1024; # 单个后台进程的最大并发数
        }

        http {
          include    mime.types;    # 文件扩展名与类型映射表  默认 mime.types; 可指定绝对地址 /etc/nginx/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  /var/log/nginx/access.log  main; # nginx 访问日志存放位置

          sendfile        on; # 开启高效传输模式
          # tcp_nopush     on; # 减少网络报文段的数量
          # keepalive_timeout  0;
          keepalive_timeout  65; # 保持连接的时间,也叫做超时连接

          etag off; # 分布式系统关闭掉Etag,每台机器生成的etag都会不一样

          # include nginx_proxy.conf; # /usr/local/etc/nginx/nginx_proxy.conf
          # ..... 其他的配置
          # 如果我们要添加缓存功能的话,需要创建一个用于存放缓存文件的文件夹。比如我们这里使用 /data/nuget-cache。
          proxy_cache_path  /data/nuget-cache levels=1:2 keys_zone=nuget-cache:20m max_size=50g inactive=168h;
          
          ## nginx安全
          server_tokens off; # 隐藏nginx版本号

          ### gzip 配置
          # 开启gzip
          gzip on;
          # 启用gzip压缩的最小文件;小于设置值的文件将不会被压缩
          gzip_min_length 1k;
          # gzip 压缩级别 1-10 
          gzip_comp_level 2;
          # 进行压缩的文件类型。
          gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
          # 是否在http header中添加Vary: Accept-Encoding,建议开启
          gzip_vary on;

          # 负载均衡:设置domain
          # upstream domain {
          #     server localhost:8000;
          #     server localhost:8001;
          # }

          server {
            listen  8081; # 监听的端口号
            server_name  xxx.abc.com; # localhost ip 域名 (多个以空格分开)

            ### 开启https
            # ## listen 443; # 开启https 一般监听443端口
            # ssl                  on;
            # ssl_certificate      /daka/program/nginx/conf/server.cer; # pem文件的路径
            # ssl_certificate_key  /daka/program/nginx/conf/server.key; # key文件的路径
            # ssl验证相关配置
            # ssl_session_timeout  5m; # 缓存有效期
            # ssl_protocols  SSLv2 SSLv3 TLSv1; # 安全链接可选的加密协议
            # ssl_ciphers  HIGH:!aNULL:!MD5; # 加密算法
            # ssl_prefer_server_ciphers   on; # 使用服务器端的首选算法

            ## 启动负载均衡
            # location / {
            #   # root   html; # Nginx默认值
            #   # index  index.html index.htm;
            # 
            #   proxy_pass http://domain; # 负载均衡配置,请求会被平均分配到8000和8001端口
            #   proxy_set_header Host $host:$server_port;
            # }

            ### 限制 ip 白名单和黑名单
            location / {
              # root   html; # Nginx默认值
              root   /usr/share/nginx/html; # 服务默认启动目录(可修改为自己的项目根目录)
              # 设定Nginx服务器返回的文档名
              index  index.html index.htm; # 默认访问文件 先找根目录下的index.html,如果没有再找index.htm
        
              # 有时候我们的服务器只允许特定主机访问,比如内部OA系统,或者应用的管理后台系统,更或者是某些应用接口,
              # 这时候我们就需要控制一些IP访问,我们可以直接在location里进行配置。
              # deny   123.9.51.42; # 限制访问 拒绝访问
              # allow  45.76.202.231; # 允许访问
            }

            ### vue react 路由 HTML5 History 模式 需要开启设置如下规则
            # location / {
            #   try_files $uri $uri/ /index.html;  # 其作用是按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有的文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。
            # }

            # 不缓存
            location ~* \.(html)$ {
              access_log off; # 关闭访问日志
              # access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]]; # 设置访问日志
              # html文件不设置强制缓存时间,协商缓存,使用 Last-Modified
              # no-cache 会发起往返通信来验证缓存的响应,但如果资源未发生变化,则不会下载,返回304。
              add_header  Cache-Control  max-age=no-cache;
              expires -10; #永远过期
            }

            # 协商缓存
            # 反向代理
            location /node {
              proxy_redirect off; # 关闭重定向url
              proxy_pass http://localhost:7878; # 反向代理目标地址
              add_header  Cache-Control  max-age=no-cache; // 不缓存
              expires -10; #永远过期
              proxy_cache nuget-cache; # 设置是否开启对后端响应的缓存,值为 zone 的名称, proxy_cache 设置的是 proxy_cache_path中的keys_zone的值。
              proxy_cache_valid 168h; # proxy_cache_valid 168h;
              # proxy_ignore_headers的含义是:忽略Cache-Control的请求头控制,依然进行缓存,比如对请求头设置cookie后,默认是不缓存的,需要我们增加忽略配置。
              proxy_ignore_headers Set-Cookie Cache-Control;
              # nginx会把响应页面的头信息也一起缓存,包括Set-cookie,导致后面访问页面的用户的cookie被设置成缓存的头。 解决方案,nginx提供proxy_hide_header的指令,可以去掉相关的响应头信息
              proxy_hide_header Cache-Control; # 去掉Cache响应头信息
              # proxy_hide_header Set-Cookie; # 去掉Cookie响应头信息
              # proxy_set_header Host $host; # 配置请求客户端真实的 Host 信息
              # proxy_set_header X-Real-IP $remote_addr; # 配置请求用户真实的IP信息
              # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              # proxy_connect_timeout 300; # 连接超时时间为300秒
              # proxy_send_timeout 30; # 读取响应超时时间为30秒
              # proxy_read_timeout 600; # 发送请求超时时间为600秒
              # proxy_buffering on; # 开启代理缓冲区
              # proxy_buffer_size 256k; # 响应头的缓冲区设为256k
              # proxy_buffers 4 128k; # 网页内容缓冲区个数为4,单个大小为128k
              # nginx会在没有完全读完后端响应的时候就开始向客户端传送数据,所以它会划出一部分缓冲区来专门向客户端传送数据(这部分的大小是由proxy_busy_buffers_size来控制的,建议为proxy_buffers中单个缓冲区大小的2倍),然后它继续从后端取数据,缓冲区满了之后就写到磁盘的临时文件中。
              # proxy_busy_buffers_size 256k;
              # proxy_temp_file_write_size 256k; # 是一次访问能写入的临时文件的大小
              # proxy_max_temp_file_size 128m; # 缓冲区临时文件最大为 256k  
              # proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504 http_404; # 项定义了什么情况下进行重试 【error:错误 timeout:超时 invalid_header:无效头 http_500:500 http_502: 502 http_503 http_504 http_404;】                  
              # proxy_cache_valid 200 302 1h; # 指定 200 302 状态码 缓存有效期
              # proxy_cache_valid 301 1d; # 指定 301 状态码 缓存有效期
              # proxy_cache_valid any 1m; # 指定 其他 状态码 缓存有效期
            }

            # 对于图片,css, 或js这样的,我想使用强制缓存
            location ~* \.(css|js|png|jpg|jpeg|gif|gz|svg|mp4|ogg|ogv|webm|htc|xml|woff)$ {
              access_log off;
              add_header Cache-Control "public,max-age=30*24*3600"; 作用 http1.1
              expires 30*24*3600; # 与max-age同时使用,作用 http1.0
              proxy_pass http://localhost:7878;
            }

            # 下载功能,url 访问 download 下载指定目录
            # localtion /download/{
            #   # ... 配置
            #   autoindex on; # 开启目录浏览下载功能 默认off on|off
            #   
            #   autoindex_exact_size off; # 指定文件大小显示为M默认是b  默认值on  on|off
            # 
            #   autoindex_localtime on;  # 开启以服务器本地时区显示文件修改日期  默认为 off,以 GMT 时间作为显示的文件时间;  on|off
            # 
            #   alias /home/test/; # 指定文件路径
            # }

            error_page   500 502 503 504  /50x.html; # 定义错误页面
            location = /50x.html {
              root   html;
            }
          }
        }