初学Nginx,感觉Nginx配置文件中指令以及参数各类繁多,总结成博客备忘,也便广大Linux爱好者学习交流,因为时间原因,总结的不够全面后续会不断完善此博文,笔者水平有限,如有疏漏不妥之处,还请不吝赐教!


以下内容部分参考互联网和 南非蚂蚁(高俊峰)所著的  《高性能Linux服务器构建实战运行监控、性能调优与集群应用》一书,

感谢开源前辈以及Linux先行者提供的宝贵资料,如有侵权之处,请马上通知,本人立即删除;


#user  nobody;  #指定 Nginx Worker进程运行用户以及用户组,默认由 nobody运行;
worker_processes  1;   #指定Nginx要开启的进程数,默认情况下是1,如果存在多颗CPU,设置为和CPU同样的数量即可;

# 全局错误日志位置及PID文件位置:

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid  logs/nginx.pid;
events {        # 用来设定Nginx的工作模式及连接数上限;worker_connections  1024;   用于定义Nginx每个进程的最大连接数,默认为12024;# 并发总数是 worker_processes 和 worker_connections 的乘积# 即 max_clients = worker_processes * worker_connections# 进程的最大连接数受Linux系统进程的最大打开 文件数限制,在执行操作系统命令"ulimit -n 65536"后 worker_connections的设置才会生效;}http {include       mime.types;    # 设定mime类型,类型由mime.type文件定义; 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  logs/access.log  main;  #访问日志记录位置   并使用main格式记录

log_format:Nginx的HttpLog模块指令,用于指定Nginx日志的输出格式,main 为此日志格式名称;

$remote_addr:客户端IP地址

$remote_user:如果需要客户端登陆才能访问,记录客户端使用哪个用户登陆;

$time_local:访问时间与时区;

$request:用户的原始请求URL,与http协议(包含整个请求符);

$status:状态码,成功即为200

$body_bytes_sent:发送给客户端的主体内容大小

$http_referer:从哪个页面链接跳转过来

$http_user_agent:客户端浏览器类型

$http_x_forwarded_for:客户端的IP地址

$remote_addr与$http_x_forwarded_for的区别:

通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址;

    client_max_body_size  20m;# 允许客户端请求的最大单个文件字节数(通过Nginx上传单个文件大小);client_header_buffer_size  32k;# 指定来自客户端请求头的headerbuffer大小,对于大多数请求1KB缓冲区大小已经足够,如果自定义了消息头或有更大的cookie,可以增加缓冲区大小,此处定义为32KB;large_client_header_buffers  4  32k;# 用来指定客户端请求中较大的消息头缓存最大数量和大小,4代表个数,128K代表大小,最大缓存为4个128KB;# nginx默认会用client_header_buffer_size这个buffer来读取header值,如果header过大,它会使用large_client_header_buffers来读取如果设置过小HTTP头/Cookie过大 会报400 错误nginx 400 bad request 求行如果超过buffer,就会报HTTP 414错误(URI Too Long)nginx接受最长的HTTP头部大小必须比其中一个buffer大,否则就会报400的HTTP错误(Bad Request)。
    sendfile        on;# 开启高效文件传输模式, 指定nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件# 对于普通应用,必须设为 on,# 如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,# 以平衡磁盘与网络I/O处理速度,降低系统的uptime.tcp_nopush     on;# 此选项允许或禁止使用socke的TCP_CORK的选项,此选项仅在使用sendfile的时候使用tcp_nodelay    on;keepalive_timeout  0; keepalive_timeout  65;    # 此处将保持时间设置为 65;# 用于设置客户端连接保持活动的超时时间,开启长连接以后,超过这个时间服务器会自动关闭这个连接;client_header_timeout 10;# 设置客户端请求头读取超时时间,如果超过时间客户端还没有发送任何数据,Nginx将返回 "Request time out (408)" 错误;client_body_timeout  10;# 设置客户端请求主体读取超时时间,默认为60。超过这个时间,客户端没有发送任何数据,Nginx将返回 "Request time out (408)"错误;
    send_timeout         10;# 用于指定响应客户端的超时时间,超时仅限于两个连接活动之间的时间,如果超过这个时间,客户端没有任何活动,Nginx将会关闭连接;proxy_connect_timeout 90; # 后端服务器连接的超时时间_发起握手等候响应超时时间proxy_read_timeout 180;# 连接成功后等候后端服务器响应时间其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)proxy_send_timeout 180;# 后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据proxy_buffer_size 256k;# 设置从被代理服务器读取的第一部分应答的缓冲区大小,通常情况下这部分应答中包含一个小的应答头,默认情况下这个值的大小为指令proxy_buffers中指定的一个缓冲区的大小,不过可以将其设置为更小proxy_buffers 4 256k;# 设置用于读取应答(来自被代理服务器)的缓冲区数目和大小,默认情况也为分页大小,根据操作系统的不同可能是4k或者8kproxy_busy_buffers_size 256k;
    proxy_temp_file_write_size 256k;# 设置在写入proxy_temp_path时数据的大小,预防一个工作进程在传递文件时阻塞太长proxy_temp_path /data0/proxy_temp_dir;

注意:此下的所有设置只有在编译时安装了  HttpGzip 模块才会被启用:

        #gzip  on;   #gzip_min_length    1k;#gzip_buffers    4    16k;#gzip_http_version    1.1;#gzip_comp_level    2;#gzip_types   text/plain  application/x-javascript  text/css  application/xml;#gzip_vary    on;

# gzip 用于设置开启或关闭gzip模块,"gzip on"表示 开启gzip压缩;

# gzip_min_length 设置 允许压缩的页面最小字节数,页面字节数从header头的Content-length中获

取,默认值为0,不管页面多大都进行压缩,建议更改成大于1K,不然会越压越大;

# gzip_buffers 表示申请4个单位为16K的内存作为压缩结果流缓存,默认值是申请与原始数据大小相

同的内存空间来存储gzip压缩结果;

# gzip_http_version 设置识别HTTP协议版本,默认为1.1,目前大部分浏览器已经支持gzip解压,使

用默认即可;

# gzip_comp_level 指定gzip压缩比,范围1-9 1压缩比最小,处理速度快,9压缩比最大,传输速度

快节约带宽,但处理起来慢,也较消耗CPU资源;

# gzip_types 指定压缩哪些文件,无论是否指定,默认情况下 text/html 类型总会被压缩

# gzip_vary 可以让前端缓存服务器缓存经过gzip压缩的页面;


        server{    # 用来标志虚拟主机开始listen    80; # 指定虚拟主机监听在哪个套接字上;server_name    192.16.12.188  www.nginx.com;  # 设置 IP地址或域名,多个域名间用空格分开index  index.html  index.htm  index.jsp; # 设置 访问的默认首页地址root  /web/www/;    # 指定虚拟主机的网页根目录,这个目录可是相对路径,也可是绝对路径;charset gb2312;  # 设置 网页默认编码格式;access_log  logs/nginx.access.log  main;# 设定本虚拟主机的访问日志}

Nginx地址匹配相当强大,location 支持正则表达式匹配,也支持条件判断匹配,用户可以通过location指定实现Nginx对动静态网页的过滤处理:

匹配方法:

=:精确匹配,把用户请求的URI,与各location匹配

~:正则表达式模式匹配,匹配时区分字符大小写

~*:正则表达式模式匹配,不区分字符大小写

^~:做URI的前半部分匹配,匹配时不检查正则表达式;

匹配规则:

匹配优先级:精确匹配(=)、^~、~ 和 ~*、最后由不带符号的URL进行左侧匹配

当被多个location所匹配时,这些优先级还一样,就会被第一个location所匹配;

此处有三个小例子:

1、通过location指令来对网页URL进行分析处理,~ 代表使用正则表达式  .* 代表以任意开头任意长度,.代表本身的意义,可以是扩号内的任何结尾,也就是说所有扩展名为.gif、.jpg、.jpeg、.png、.bmp、.swf的静态文件都交给Nginx处理;

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$  {root    /web/www/www.nginx.com;  # 匹配到哪个目录 expries  30d;    # 静态文件过期时间}

2、将upload和html下的所有文件都交给Nginx来处理,前提是upload和html目录包含在/web/www/www.nginx.com目录中

        location ~ ^/(upload|html)/  {root  /web/www/www.nginx.com;expries  30d;}

3、location 将所有以 .jsp 为后缀的文件都交给本机的 8080 端口处理;

      location ~ .*.jsp$ {index  index.jsp;proxy_pass  http://localhost:8080;}

转载于:https://blog.51cto.com/linuxzj/1596823

Nginx三部曲之一【配置文件详解】相关推荐

  1. nginx服务器安装及配置文件详解

    nginx服务器安装及配置文件详解 seanlook 5月26日 发布 4 推荐 97 收藏,9.2k 浏览 nginx在工作中已经有好几个环境在使用了,每次都是重新去网上扒博客,各种编译配置,今天自 ...

  2. Nginx介绍及配置文件详解

    nginx作为web服务以及nginx.conf详解 Nginx系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 1.nginx简介 ngi ...

  3. nginx安装、配置文件详解、测试

    1.安装 cd /usr/localwget http://nginx.org/download/nginx-1.23.1.tar.gztar zxvf nginx-1.23.1.tar.gz 直接安 ...

  4. Nginx(二):反向代理原理 与 配置文件详解

    相关阅读: Nginx(一):Nginx原理概述 与 安装步骤详解 Nginx(二):反向代理原理 与 配置文件详解 Nginx(三):负载均衡策略 与 Nginx静态服务器 Nginx(四):Ngi ...

  5. nginx.conf 配置文件详解

    本文来说下nginx.conf 配置文件详解 文章目录 Nginx 配置文件概述 nginx.conf 配置文件 通用(这里是 windows 系统系 nginx1.14.2 下 nginx.conf ...

  6. nginx的配置文件详解

    文章目录 1. nginx的配置文件详解 2. nginx.conf配置详解 3. 用于调试.定位问题的配置参数 4. 正常运行必备的配置参数 5. 优化性能的配置参数 6. 事件相关的配置:even ...

  7. 配置nginx方向代理,实现URL隐形转发 (附带nginx配置文件详解)

    配置nginx方向代理,实现URL隐形转发 (附带nginx配置文件详解) 免费领取满减阿里云红包 项目名称:[域名解析–隐形URL转发]–centos 7.3 环境: 阿里云服务器之上有多个tomc ...

  8. nginx学习简介-安装-启动-命令-nginx配置文件详解

    nginx是什么:nginx是一个高性能的HTTP和反向代理web服务器.同时也提供了IMAP/POP3/SMTP服务. nginx特点:开源.占内存少.轻量级.高性能(有报告表面nginx能支持高达 ...

  9. nginx平滑升级与配置文件详解

    nginx平滑升级与配置文件详解 文章目录 nginx平滑升级 nginx配置文件 nginx.conf配置详解 用于调试.定位问题的配置参数 正常运行必备的配置参数 优化性能的配置参数 网络连接相关 ...

  10. CENTOS7 高性能Linux集群 通过yum进行 haproxy配置 !安装 !使用!HAProxy配置文件详解

    Haproxy配置 永久修改名字:便于区分虚拟机! Haproxy:hostnamectl set-hostname haproxy Web1: hostnamectl set-hostname WE ...

最新文章

  1. linux c调用wcf服务,Silverlight+WCF实现跨域调用
  2. 矩阵论复习-过渡矩阵、生成子空间、表示矩阵、度量矩阵、酉空间、内积
  3. clion中文乱码_CLion 遇到乱码的解决办法
  4. 中国工程院院士徐宗本:大数据的挑战和问题
  5. c语言 炸弹文件,炸弹超人游戏c语言简板
  6. 今日恐慌与贪婪指数为75 贪婪程度有所上升
  7. 2008已经到来,我们怎能原地踏步!
  8. php 解析返回的xml,php解析xml的几种方式
  9. jQuery之事件绑定到触发全过程及知识点补充
  10. 数据仓库入门(实验9)查询多维数据集
  11. python中bytes用法_Python中BytesIO的使用场景,什么时间应该使用BytesIO?
  12. IDC发布2020上半年SD-WAN报告:阿里云领跑国内服务市场
  13. ESP32-IDF开发实例-ADC电压采集
  14. 封装Win 10系统时封装工具报错,无法正常封装,封装失败
  15. python实现图片识别文字程序
  16. vs支持java吗_为什么vs不支持java
  17. 债券收益率预测模型_ARIMA模型在中国移动债券收益预测中的应用
  18. 洛谷 P1129 矩阵游戏
  19. 红警2尤里的复仇中文完整PC版
  20. 自建图床之一:使用幻想领域搭建免费新浪图床网站

热门文章

  1. uva1025城市里的间谍
  2. activiti主要API对象
  3. IOS UITableView 加载未知宽高图片的解决方案
  4. css sprite技巧详解
  5. word2007-2010排版中解决段后插入分页符 新页首行空行问题
  6. JavaBean的保存范围与javaBean的删除
  7. 组件 插件 控件联系与区别
  8. 在 Delphi 下使用 DirectSound (4): 设置音量、相位、播放频率和播放位置
  9. 关于Session_End()运行机制的一些细节!
  10. CIKERS Shane 20190611