Nginx 常用指令说明( 二 )

  • proxy_temp_file_write_size 64k
  • 当缓存被代理的服务器响应到临时文件时 , 这个选项限制每次写临时文件的大小 。proxy_temp_path(可以在编译的时候)指定写到哪那个目录 。
  • proxy_pass , proxy_redirect见 location 部分 。
    模块http_gzip:
    • gzip on : 开启gzip压缩输出 , 减少网络传输 。
    • gzip_min_length 1k :设置允许压缩的页面最小字节数 , 页面字节数从header头得content-length中进行获取 。默认值是20 。建议设置成大于1k的字节数 , 小于1k可能会越压越大 。
    • gzip_buffers 4 16k :设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流 。4 16k代表以16k为单位 , 安装原始数据大小以16k为单位的4倍申请内存 。
    • gzip_http_version 1.0 :用于识别 http 协议的版本 , 早期的浏览器不支持 Gzip 压缩 , 用户就会看到乱码 , 所以为了支持前期版本加上了这个选项 , 如果你用了 Nginx 的反向代理并期望也启用 Gzip 压缩的话 , 由于末端通信是 http/1.0 , 故请设置为 1.0 。
    • gzip_comp_level 6 :gzip压缩比 , 1压缩比最小处理速度最快 , 9压缩比最大但处理速度最慢(传输快但比较消耗cpu)
    • gzip_types :匹配mime类型进行压缩 , 无论是否指定,”text/html”类型总是会被压缩的 。
    • gzip_proxied any :Nginx作为反向代理的时候启用 , 决定开启或者关闭后端服务器返回的结果是否压缩 , 匹配的前提是后端服务器必须要返回包含”Via”的 header头 。
    • gzip_vary on :和http头有关系 , 会在响应头加个 Vary: Accept-Encoding  , 可以让前端的缓存服务器缓存经过gzip压缩的页面 , 例如 , 用Squid缓存经过Nginx压缩的数据 。。
    3. server虚拟主机
    http服务上支持若干虚拟主机 。每个虚拟主机一个对应的server配置项 , 配置项里面包含该虚拟主机相关的配置 。在提供mail服务的代理时 , 也可以建立若干server 。每个server通过监听地址或端口来区分 。
    • listen
    • 监听端口 , 默认80 , 小于1024的要以root启动 。可以为listen *:80、listen 127.0.0.1:80等形式 。
    • server_name
    • 服务器名 , 如localhost、www.example.com , 可以通过正则匹配 。
    模块http_stream
    这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡 , upstream后接负载均衡器的名字 , 后端realserver以 host:port options; 方式组织在 {} 中 。如果后端被代理的只有一台 , 也可以直接写在 proxy_pass。
    4. location
    http服务中 , 某些特定的URL对应的一系列配置项 。
    • root /var/www/html
    • 定义服务器的默认网站根目录位置 。如果locationURL匹配的是子目录或文件 , root没什么作用 , 一般放在server指令里面或/下 。
    • index index.jsp index.html index.htm
    • 定义路径下默认访问的文件名 , 一般跟着root放
    • proxy_pass http:/backend
    • 请求转向backend定义的服务器列表 , 即反向代理 , 对应upstream负载均衡器 。也可以proxy_pass http://ip:port 。
    • proxy_redirect off;
    • proxy_set_header Host $host;
    • proxy_set_header X-Real-IP $remote_addr;
    • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    • 这四个暂且这样设 , 如果深究的话 , 每一个都涉及到很复杂的内容 , 也将通过另一篇文章来解读 。
    关于location匹配规则的写法 , 可以说尤为关键且基础的 , 参考文章 nginx配置location总结及rewrite规则写法;
    5. 其它
    5.1 访问控制 allow/deny
    Nginx 的访问控制模块默认就会安装 , 而且写法也非常简单 , 可以分别有多个allow,deny , 允许或禁止某个ip或ip段访问 , 依次满足任何一个规则就停止往下匹配 。如:
    Nginx 常用指令说明

    文章插图
    【Nginx 常用指令说明】 
    我们也常用 httpd-devel 工具的 htpasswd 来为访问的路径设置登录密码:
    Nginx 常用指令说明

    文章插图
     
    这样就生成了默认使用CRYPT加密的密码文件 。打开上面nginx-status的两行注释 , 重启nginx生效 。


    推荐阅读