nginx配置文件简述

#nginx进程,一般设置为和cpu核数一样
worker_processes 4;                        
#错误日志存放目录 
error_log  /data1/logs/error.log  crit;  
#运行用户,默认即是nginx,可不设置
user nginx       
#进程pid存放位置
pid /application/nginx/nginx.pid;        
#最大文件打开数(连接),可设置为系统优化后的ulimit -HSn的结果
worker_rlimit_nofile 65535;

#cpu亲和力配置,让不同的进程使用不同的cpu

worker_cpu_affinity 0001 0010 0100 1000;

#工作模式及连接数上限

 1 events
 2 {
 3   use epoll;       #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
 4   worker_connections 1024;  #;单个后台worker process进程的最大并发链接数
 5 }
 6 ###################################################
 7 http
 8 {
 9
10 include mime.types; #文件扩展名与类型映射表
11 default_type application/octet-stream; #默认文件类型

#limit模块,可防范一定量的DDOS攻击
#用来存储session会话的状态,如下是为session分配一个名为one的10M的内存存储区,限制了每秒只接受一个ip的一次请求 1r/s

1   limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
2   limit_conn_zone $binary_remote_addr zone=addr:10m;
3   include       mime.types;
4   default_type  application/octet-stream;

#第三方模块lua防火墙

1 lua_need_request_body on;
2 #lua_shared_dict limit 50m;
3 lua_package_path "/application/nginx/conf/waf/?.lua";
4 init_by_lua_file "/application/nginx/conf/waf/init.lua";
5 access_by_lua_file "/application/nginx/conf/waf/access.lua";

#设定请求缓存

1 server_names_hash_bucket_size 128;
2 client_header_buffer_size 512k;
3 large_client_header_buffers 4 512k;
4 client_max_body_size 100m;

#隐藏响应header和错误通知中的版本号
  server_tokens off;
#开启高效传输模式   
  sendfile on;

-------------------------------------------------------------------------------------------------
#激活tcp_nopush参数可以允许把httpresponse header和文件的开始放在一个文件里发布,
#积极的作用是减少网络报文段的数量
  tcp_nopush     on;
#激活tcp_nodelay,内核会等待将更多的字节组成一个数据包,从而提高I/O性能
  tcp_nodelay on;

 1 官方:
 2
 3 tcp_nopush
 4
 5 Syntax: tcp_nopush on | off
 6
 7 Default: off
 8
 9 Context: http
10
11 server
12
13 location
14
15 Reference: tcp_nopush
16
17 This directive permits or forbids the use of thesocket options TCP_NOPUSH on FreeBSD or TCP_CORK on Linux. This option is onlyavailable when using sendfile.
18
19 Setting this option causes nginx to attempt to sendit’s HTTP response headers in one packet on Linux and FreeBSD 4.x
20
21 You can read more about the TCP_NOPUSH and TCP_CORKsocket options here.
22
23 linux 下是tcp_cork,上面的意思就是说,当使用sendfile函数时,tcp_nopush才起作用,它和指令tcp_nodelay是互斥的。tcp_cork是linux下tcp/ip传输的一个标准了,这个标准的大概的意思是,一般情况下,在tcp交互的过程中,当应用程序接收到数据包后马上传送出去,不等待,而tcp_cork选项是数据包不会马上传送出去,等到数据包最大时,一次性的传输出去,这样有助于解决网络堵塞,已经是默认了。
24
25 也就是说tcp_nopush = on 会设置调用tcp_cork方法,这个也是默认的,结果就是数据包不会马上传送出去,等到数据包最大时,一次性的传输出去,这样有助于解决网络堵塞。
26
27 以快递投递举例说明一下(以下是我的理解,也许是不正确的),当快递东西时,快递员收到一个包裹,马上投递,这样保证了即时性,但是会耗费大量的人力物力,在网络上表现就是会引起网络堵塞,而当快递收到一个包裹,把包裹放到集散地,等一定数量后统一投递,这样就是tcp_cork的选项干的事情,这样的话,会最大化的利用网络资源,虽然有一点点延迟。
28
29 对于nginx配置文件中的tcp_nopush,默认就是tcp_nopush,不需要特别指定,这个选项对于www,ftp等大文件很有帮助

nopush

1 TCP_NODELAY和TCP_CORK基本上控制了包的“Nagle化”,Nagle化在这里的含义是采用Nagle算法把较小的包组装为更大的帧。 John Nagle是Nagle算法的发明人,后者就是用他的名字来命名的,他在1984年首次用这种方法来尝试解决福特汽车公司的网络拥塞问题(欲了解详情请参看IETF RFC 896)。他解决的问题就是所谓的silly window syndrome,中文称“愚蠢窗口症候群”,具体含义是,因为普遍终端应用程序每产生一次击键操作就会发送一个包,而典型情况下一个包会拥有一个字节的数据载荷以及40个字节长的包头,于是产生4000%的过载,很轻易地就能令网络发生拥塞,。 Nagle化后来成了一种标准并且立即在因特网上得以实现。它现在已经成为缺省配置了,但在我们看来,有些场合下把这一选项关掉也是合乎需要的。
2
3        现在让我们假设某个应用程序发出了一个请求,希望发送小块数据。我们可以选择立即发送数据或者等待产生更多的数据然后再一次发送两种策略。如果我们马上发送数据,那么交互性的以及客户/服务器型的应用程序将极大地受益。如果请求立即发出那么响应时间也会快一些。以上操作可以通过设置套接字的TCP_NODELAY = on 选项来完成,这样就禁用了Nagle 算法。
4
5        另外一种情况则需要我们等到数据量达到最大时才通过网络一次发送全部数据,这种数据传输方式有益于大量数据的通信性能,典型的应用就是文件服务器。应用 Nagle算法在这种情况下就会产生问题。但是,如果你正在发送大量数据,你可以设置TCP_CORK选项禁用Nagle化,其方式正好同 TCP_NODELAY相反(TCP_CORK和 TCP_NODELAY是互相排斥的)。

nodelay

#FastCGI相关参数:为了改善网站性能:减少资源占用,提高访问速度

1 fastcgi_connect_timeout 300;
2 fastcgi_send_timeout 300;
3 fastcgi_read_timeout 300;
4 fastcgi_buffer_size 64k;
5 fastcgi_buffers 4 64k;
6 fastcgi_busy_buffers_size 128k;
7 fastcgi_temp_file_write_size 128k;

#连接超时时间,单位是秒
  keepalive_timeout 60;

#开启gzip压缩功能
    gzip on;
 #设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认值是0,表示不管页面多大都进行压缩。建议设置成大于1K。如果小于1K可能会越压越大。
  gzip_min_length  1k;

#压缩缓冲区大小。表示申请4个单位为16K的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果。
  gzip_buffers     4 16k;

#压缩版本(默认1.1,前端为squid2.5时使用1.0)用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可。
  gzip_http_version 1.0;

#压缩比率。用来指定GZIP压缩比,1压缩比最小,处理速度最快;9压缩比最大,传输速度快,但处理最慢,也比较消耗cpu资源。
  gzip_comp_level 9;

#用来指定压缩的类型,“text/html”类型总是会被压缩
  gzip_types       text/plain application/x-javascript text/css application/xml;
 #vary header支持。该选项可以让前端的缓存服务器缓存经过GZIP压缩的页面,例如用Squid缓存经过Nginx压缩的数据。

gzip_vary off;

#开启ssi支持,默认是off
  ssi on;
  ssi_silent_errors on;
#设置日志模式可参考《nginx----log_format配置
    log_format  access  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
                        ‘$status $body_bytes_sent "$http_referer" ‘
                        ‘"$http_user_agent" $http_x_forwarded_for‘;

#反向代理负载均衡设定部分

#upstream表示负载服务器池,定义名字为backend_server的服务器池

1 upstream backend_server {
2     server   10.254.244.20:81 weight=1 max_fails=2 fail_timeout=30s;
3     server   10.254.242.40:81 weight=1 max_fails=2 fail_timeout=30s;
4     server   10.254.245.19:81 weight=1 max_fails=2 fail_timeout=30s;
5     server   10.254.243.39:81 weight=1 max_fails=2 fail_timeout=30s;

#设置由 fail_timeout 定义的时间段内连接该主机的失败次数,以此来断定 fail_timeout 定义的时间段内该主机是否可用。默认情况下这个数值设置为 1。零值的话禁用这个数量的尝试。设置在指定时间内连接到主机的失败次数,超过该次数该主机被认为不可用。这里是在30s内尝试2次失败即认为主机不可用!

  }
###################

#基于域名的虚拟主机

 1   server
 2   {
 3
 4 #监听端口
 5     listen       80;
 6     server_name  www.abc.com abc.com;
 7     index index.html index.htm index.php;    #首页排序
 8     root  /data0/abc;                            #站点根目录,即网站程序存放目录
 9     error_page 500 502 404 /templates/kumi/phpcms/404.html;   #错误页面
10 #伪静态   将www.abc.com/list....html的文件转发到index.php。。。
11 #rewrite ^/list-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /index.php?m=content&c=index&a=lists&catid=$1&types=$2&country=$3&language=$4&age=$5&startDate=$6&typeLetter=$7&type=$8&page=$9 last;

#location 标签,根目录下的.svn目录禁止访问

 1    location ~ /.svn/ {
 2      deny all;
 3     }
 4             location ~ \.php$
 5              {  #符合php扩展名的请求调度到fcgi server
 6               fastcgi_pass  127.0.0.1:9000;  #抛给本机的9000端口
 7               fastcgi_index index.php;    #设定动态首页
 8               include fcgi.conf;
 9              }
10             allow   219.237.222.30 ;  #允许访问的ip
11             allow   219.237.222.31 ;
12             allow   219.237.222.32 ;
13             allow   219.237.222.33 ;
14             allow   219.237.222.34 ;
15             allow   219.237.222.35 ;
16             allow   219.237.222.61 ;
17             allow   219.237.222.28 ;
18             deny    all;            #禁止其他ip访问
19             }
20     location ~ ^/admin.php
21          {
22             location ~ \.php$
23              {
24               fastcgi_pass  127.0.0.1:9000;
25               fastcgi_index index.php;
26               include fcgi.conf;
27              }
28             allow   219.237.222.30 ;
29             allow   219.237.222.31 ;
30             allow   219.237.222.32 ;
31             allow   219.237.222.33 ;
32             allow   219.237.222.34 ;
33             allow   219.237.222.35 ;
34             allow   219.237.222.61;
35             allow   219.237.222.28;
36          deny    all;
37             }

原文地址:https://www.cnblogs.com/mliu/p/10669958.html

时间: 2024-10-07 05:52:14

nginx配置文件简述的相关文章

linux下Nginx配置文件(nginx.conf)配置设置详解(windows用phpstudy集成)

linux备份nginx.conf文件举例: cp /usr/local/nginx/nginx.conf /usr/local/nginx/nginx.conf-20171111(日期) 在进程列表里 面找master进程,它的编号就是主进程号. ps -ef | grep nginx 查看进程 cat /usr/local/nginx/nginx.pid 每次修改完nginx文件都要重新加载配置文件linux命令: /usr/local/nginx -t //验证配置文件是否合法 若ngin

nginx配置文件详解

nginx配置文件nginx.conf超详细讲解 #nginx进程,一般设置为和cpu核数一样worker_processes 4;                        #错误日志存放目录 error_log  /data1/logs/error.log  crit;  #运行用户,默认即是nginx,可不设置user nginx       #进程pid存放位置pid        /application/nginx/nginx.pid; #Specifies the value

ansible管理nginx配置文件

#生产环境中大多时候是需要管理配置文件的,安装软件包只是在初始化环境的时候用一下.下面我们来写个管理nginx配置文件的playbook 一.创建相关目录 mkdir  -p /etc/ansible/nginx_config/roles/{new,old}/{files,handlers,vars,tasks} #其中new为更新时用到的,old为回滚时用到的,files下面为nginx.conf和vhosts目录,handlers为重启nginx服务的命令. #关于回滚,需要在执行playb

Struts2基本使用(二)--配置文件简述

配置文件简述 引入Struts2框架之后项目中多了一个struts.xml,以及web.xml也多了一些代码 web.xml只要的功能就是拦截用户的请求其多出的代码如下: <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class&

nginx 配置文件 PATHINFO重写规则

user  www www;worker_processes  2; #error_log  logs/error.log;#error_log  logs/error.log  notice;#error_log  logs/error.log  info; pid        logs/nginx.pid; events {    use epoll;    worker_connections  2048;} http {    include       mime.types;   

NGINX配置文件nginx.conf详解

1.配置文件结构 Nginx配置文件主要分成四部分:main(全局设置).server(主机设置).upstream(上游服务器设置,主要为反向代理.负载均衡相关配置)和 location(URL匹配特定位置后的设置),每部分包含若干个指令.main部分设置的指令将影响其它所有部分的设置:server部分的指令主要用于指定虚拟主机域名.IP和端口:upstream的指令用于设置一系列的后端服务器,设置反向代理及后端服务器的负载均衡:location部分用于匹配网页位置(比如,根目录"/"

ansible-管理nginx配置文件

背景:安装软件包,只是在初始化环境时用一下,大多时候需要修改配置文件:管理Nginx配置文件的playbook,执行playbook之前,一定要备份旧的配置:机器上的配置文件需和new/files保持一致 1. 创建目录和配置文件 说明:new为更新时用到,old为回滚时用到,即将new目录内容拷贝进来 mkdir -p /etc/anxible/nginx_config/roles/new/{files,handlers,vars,tasks} mkdir -p /etc/anxible/ng

配置使用vim编辑Nginx配置文件时语法高亮

vim是Unix系统中非常实用的文本编辑器,它和传统的vi相比最大的区别在于它所支持的配色方案,这个功能使得平时编辑一些配置文件或者是在写代码的时候极大的提高工作效率,如果我们在系统中有安装vim相应的包且开启了syntax配色方案的时候会不显示语法高亮往往是配置设置错误所引起的.一般配置错误有2个地方:1.是远程服务器的仿真客户终端配置错误:2.是服务器上环境变量配置错误.在这里就用SecureCRT仿真客户终端为例子简单的说一下vim开启syntax配色方案: 在SecureCRT上需要配置

【Nginx笔记】nginx配置文件具体解释

本文主要对nginx的配置做重点说明,关于nginx的其他基本概念.建议參考官网描写叙述.这里推荐Nginx Beginner's Guide这篇文档.对刚開始学习的人高速认识nginx非常有帮助. 显然.发挥nginx强大优势的前提是熟悉其配置文件并进行合理的配置.而学习nginx配置时.最重要的一点是建立例如以下概念: The most important is that nginx is a reverse proxy first and HTTP server second, its f