美文网首页
Nginx 相关知识点和配置

Nginx 相关知识点和配置

作者: Joah_l | 来源:发表于2019-09-29 11:55 被阅读0次

    全局变量

    • $http_x_forwarded_for

      用来记录 ip 地址, 区别代理服务器

    • $remote_user

      用来记录远程客户端用户名称

    • $time_local

      用来记录访问时间和时区

    • $request

      用来记录请求的URL 与 HTTP 协议

    • $status

      用于记录请求的状态, 例如成功时状态为 200, 页面找不到时 404

    • $body_bytes_send

      用于记录发送给客户端的文件主体内容大小

    • $http_referer

      用来记录是从那个页面链接访问过来的

    • $http_user_agent

      用于记录客户端浏览器的相关信息

    • args,query_string

      此变量与请求行中的参数相等

    • $content_length

      请求行中的 - Content-Type

    • $remote_addr

      客户端 ip

    • $remote_port

      客户端 port

    • $request_filename

      当前请求的文件的路径名,由root或alias和URI request组合而成

    • $limit_rate

      允许限制的连接速率

    • $request_uri

      含有参数的完整的初始URI

    • $uri

      等同于当前request中的URI,可不同于初始值,例如内部重定向时或使用index

    Nginx 设置反向代理

      location ^~ /api/ {
          proxy_pass        http://127.0.0.1:7071;
          proxy_redirect off;
          # 后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
          proxy_set_header  Host  $host;
          proxy_set_header  X-Real-IP  $remote_addr;
          proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
          proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
      }
    

    前端使用 nginx 部署 React Spa (Browser History) 的特殊配置

      location / {
        root: path;
        index: index.html;
        try_files try_files $uri /index.html;
      }
    

    nginx 配置 https 和 开启 h2

      server {
        listen     443 ssl http2;
        server_name  106.53.94.167;
        root   /home/ubuntu/workspace/mpa-dance-admin/dist;
    
        charset utf-8;
    
        ssl_certificate             hxedu.top.crt;
        ssl_certificate_key         hxedu.top.key;
        ssl_session_cache           shared:SSL:1m;
        ssl_session_timeout         5m;
        ssl_protocols               SSLv2 SSLv3 TLSv1.2;
        ssl_ciphers                 ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_prefer_server_ciphers   on;
        location / {
          <!-- 具体的配置 -->
        }
      }
    

    nginx 开启 gzip

      ##
      # Gzip Settings
      ##
      gzip on;
      gzip_vary on;
      gzip_min_length 1k;
      # gzip_proxied any;
      gzip_comp_level 2;
      # gzip_buffers 16 8k;
      # gzip_http_version 1.1;
      gzip_types text/csv text/xml text/css text/plain text/javascript application/javascript application/x-javascript application/json application/xml;
    

    nginx 日志配置

    可以给每一个 HTTP, Server, Location 定义一个日志

    • open_log_file_cache

      对于每一条日志记录, 日志文件都将先打开文件, 再写入日志记录, 然后马上关闭, 为了提高包含的日志变量的日志文件存放路径的性能, 可以使用 - open_log_file_cache 指令来设置; 格式如下

      open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time] | off

      • off
      • max: 设置缓存中的最大文件描述符数量
      • inactive: 设置一个时间, 如果在设置的时间内没有使用此文件描述符, 则自动删除此描述符
      • min_uses: 在参数 inactive 指定的时间范围内, 如果日志文件超过被使用的次数, 则该日志文件的描述符计入缓存, 默认为 10s
      • valid: 设置多长时间检查一次, 看日志文件路径与文件名是否任然存在, 默认是 60s

      eg: open_log_file_cache max=1000 inactive=20s min_users=2 valid=1m

    • log_format

        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 访问日志

    Nginx 的浏览器本地缓存设置

    http {......} 中间配置, 启动压缩

      location ~ .*\.(gif|jpg|png)$ {
        expires 30d
      }
    

    Nginx 设置限速 limit_rate

    • 限制IP的连接和并发 http {} 作用域配置

      • limit_req_zone 用来限制单位时间内的请求数
      • limit_req_conn 用来限制同一时间连接数
      location /download {
        limit_rate 256k;
        proxy_pass http://1.2.3.4
      }
    
      location /movie {
        limit_rate_after 10m;
        limit_rate 100k;
        if ($http_user_agent ~ Google|baidu) {
          limit_rate 20k;
        }
      }
    

    相关文章

      网友评论

          本文标题:Nginx 相关知识点和配置

          本文链接:https://www.haomeiwen.com/subject/tjdlyctx.html