nginx常见模块和配置文件解释
查看rpm
	rpm -q --scripts nginx


	查看nginx,制定绑定CPU的核心数,具体跑在哪个CPU上面。
		watch -n 0.5 'ps axo cmd,pid,psr |grep nginx '	
manin:	
	
	#user  nobody;
		只能放manin语句块里
		
		默认是nobody用户,在没有指定用户的时候,默认就是nobody用户

	user nginx;
		只能放manin语句块里
		
		运行nginx进程用户,最好是系统用户,不要让这个用户有可以登录的权限
		
	worker_processes  1;
		只能放manin语句块里
		
		运行woker个数,一般根据自己的CPU来修改,如果你的CPU是四核的这里可以写上3核,单独留一个CPU给系统调用
		
	worker_rlimit_nofile 65535;
		只能放manin语句块里
		
		最大端口连
	
	worker_priority
		只能放manin语句块里
		
		优先级 制定worker进程的nice值,设定worker进程优先级一般为正19到副20,优先级越高优先级越高
	
	worker_cpu_affinity 1000 0100;
		只能放manin语句块里
		
		绑定CPU核心,具体绑定到哪个核心上
	
	use epoll;
		只能放manin语句块里
		
		默认模式,无需修改
	
	daemon on|off
		只能放manin语句块里
		是否以守护进程运行,也就是前台执行还是后台执行,前台执行显示显示执行,后台执行不影响其他操作默认是on,如果是测试开发环境可以用前台模式运行,方便修改
		
		
events模块:事件驱动 
		
	worker_connections 15000;
		events下使用
		每个worker进程所能够打开的最大并发数量,如10240
	
	accept_mutex on|off
		events下使用
        处理新的链接请求方式,on指由各个worker轮流处理新请求,off指每个新请求的到达都会通知(唤醒worker进程),但是只有一个进程可获得链接,造成 “惊群” 影响性能可以在events下载使用
		
http模块:		
	
	/application/nginx-1.16.1/logs/nginx.pid
		nginx运行的进程ID号,PID会随机生成一个ID号
		
server段:
	ssl
		限制仅能够通过ssl连接提供服务
		
	backlpg=number
		超过并发连接数后,新请求进入后援队列的长度,也就是请求满了,让后面的连接等待
	
	rcvbuf=size
		接收缓冲区大小
	
	sndbuf=size
		发送缓冲区大小
		
	
	keepalive_timeout timeout 75s;
		可用段:http,server,location
		设定保持连接超时时常,0表示禁止长链接,默认为75s秒
	可用telnet测试
		例子:
			telnet 10.0.0.7
			GET /index.html HTTP/1.1
			HOST:www.b.com
			再次访问
			GET /index.html HTTP/1.1
			HOST:www.b.com
			
	keepalive_requests numaber;
		在一次长链接上所允许请求的资源的最大数量默认为100
		
	keepalive_disable none|browser;
		对那种浏览器禁用长链接
		
	send_timeout time;
		向客户端发送响应报文的超时时长,此处是指两次写操作之间的间隔时长,而非整个响应的传输市场
		
	client_body_buffer_size size;
		用户接受每个客户端请求包文件的body部分的缓冲区大小;默认为16k;超出此大小时,其将被暂存到磁盘上的由下面的client_body_teme_path指令所定义的位置
		当用户上传的文件超过16k时,单独用一个目录作为临时存储目录
		
	clie_body_temp_path path [level1 [level2 [level3]]] ;
		设定用于存储客户端请求报文的body部分的临时存储路径及子目录结构和数量
		目录名为16进制数字;
		
	例子:
		client——body_temp_path /var/tmp/client_body 1 2 2
		
		1 1级目录占1位16进制,既2^4=16个目录0-f 
		2 2级目录占2位16进制,既2^8=256目录00-ff
		3 3级目录占2位16进制,级2^8=256个目录 00-ff
		
		
	对客户端限速
		limit_rate rate;
			限制响应给客户端的传输速度,单位是bytes/second
			默认值为0表示无限制
		比如限制1MB/
		limit_rate 1024000;

	
	limit_except method ...{...},仅能使用location限制客户端使用除了指定的请求方法之外的其他方法
	method:GET,HEAD,POST,PUT,DELETE,,MKCOL,COPY,MOVE,OPTIONS,PROPFIND,PROPPATCH,LOCK,UNLOCK,PACH
	location / {
	limit_xpcept GET {
	allow 192.168.1.0/24;
	deny all;
	 }
   }
	除了GET个HEAD之外其他方法仅允许192.168.1.1/24网段主机使用
	
	aio on|off
		是否启用aio,异步io,
		
	directio   size|off;
		是否同步(直接)写磁盘,而非写缓存,在linux主机启用O_DIRECT标记,则文件大小等于给定大小时使用,例如:directio 4m
		也就是直接把内容直接写入磁盘而非写入内存,再写入硬盘,不启用的时候是直接写入内存中
		
	open_file_cache off;
		open_file_cache max=N [inactive=time];
		nginx可以缓存以下三种信息:
		(1) 文件元数据:文件的描述符、文件大小和最近一次的修改时间
		(2) 打开的目录结构
		(3) 没有找到的或者没有权限访问的文件的相关信息 
			max=N:可缓存的缓存项上限;达到上限后会使用LRU算法实现管理
			inactive=time:缓存项的非活动时长,在此处指定的时长内未被命中的或命中的次数少于
			open_file_cache_min_uses指令所指定的次数的缓存项即为非活动项 , 将被删除
	
	open_file_cache_errors on | off;
		是否缓存查找时发生错误的文件一类的信息默认值为off	
		open_file_cache_min_uses number;
		open_file_cache指令的inactive参数指定的时长内,至少被命中此处指定的次数方可被归类为活动项	
		
	

配置文件
	
user  nginx;
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;
    #gzip  on;
    server {
        listen       80;
        server_name  localhost;
        #access_log  logs/host.access.log  main;
        location / {
            root   html;
            index  index.html index.htm;
        }
        #error_page  404              /404.html;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        #location ~ /\.ht {
        #    deny  all;
        #}
    }
}
	
	
	
	
讲解:

	^~ 
		对URI的最左边部分做匹配检查,不区分字符大小写
		
	~
		对URI做正则表达式模式匹配,不区分字符大小写
		
	~*
		对URI做正则表达式匹配,不区分字符大小写
	不带符号:匹配起始于此URI的所以的URI
	匹配优先级从高到低
	=,^~,~/,~*,不带符号
	
	
	
	



	server_name name 
		虚拟主机的主机名称,后可跟多个由空白字符分隔的字符串,
		支持*通配任意长度的任意资费
		例子:
			server_name *.9527edu.org www.9527edu.*
	
	
	
	tcp_nodelay on|off
		可用于http,server,location语句块
		
		在keepaived模式下的连接数是否启用TCP_NODELAY选项,
		当为off时,延迟发送,合并多个请求后再发送,这样效率很低,客户请求慢!
		默认为on时,不延迟发送
	
	
	sendfile on|off
		是否启用sendfile功能,在内核中封装豹纹直接发送
		默认为off
	
	server_tokens on|off
		server段使用
		
		是否在响应报文的server首部显示nginx版本
	
	
	
location匹配
		
	在一个server中location配置段可存在多,用于实现从url到文件系统的路径映射;nginx会根据用户请求的URI来检查定义的所有location,并找出一个最佳匹配,而后应用其配置
	
	   server  {
        listen       80;
        server_name  localhost;
            root   /www/www.a.com;
        location /images/ {
            root   /app/www.a.com;

        }
    }
	
	匹配www.a.com/images/123.jpg
	真实路径应该是/aap/www.a.com/images/123.jpg
	
	
	
	alias path:
		路径别名,文档映射的另一种机制,仅能使用location上下文
		
		
	例子:
		https://9527edu.org/bba/index.php
		location /bbs/ {
			alias /web/forum/;
		}  ----> /web/forum/index.html
		
		locaation /bbs/ {
			root /web/forum/;
		} -----> /web/forum/bbs/index.html

	
	注意:location中使用时root制定和alias指令的意义不同
		a. root,给定的路径对应于location中的/URI/左侧的/
		b. alias,给定的路径对应于location中的/URI/右侧的/
		
		
		
	index
		指定默认访问页面
	例子:
		server {
				listen 80;
				server_tokens off;
				server_name www.b.com;
				root /data/web2/;
				location /images {
					alias /aap/web2/;
					index 123.jpg
					}
			   }
这样访问http://www.b.com/images/的时候默认访问的页面就是http://www.b.com/images/123.jpg	
		
	
	
	自定义错误页面	
	error_page code ..[=[response]] uri
    模块:ngx_http_pore_module
		定义错误页面,以制定的响应的状态码进行相应
		可用位置:http,server,location,if in location
		erroe_page 404 /404.html
		error_page 404 =200 /404.html
	自定义错误页面	
	例子:
		server {
				listen 80;
				server_tokens off;
				server_name www.b.com;
				erroe_page 400 /404.html;
				locaion /404.html {
					   root /data/erroe_html/;
				   }
			   }
		
		
		
	错误页面做跳转,404跳转到302
	例子:
		
		server {
				listen 80;
				server_tokens off;
				server_name www.b.com;
				erroe_page 404 =302 /302.html;
				locaion /302.html {
					   root /data/erroe_html/;
				   }
			   }
		
		
	try_files file ... uri;
	try_files file ... code;
		应用段 :server,location
		按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有的文件 件或者文件夹都找不到,会进行一个内部重定向到最后一个参数,只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部URI的指向,最后一个参数是回退URI且必须存在,否则会小狐仙内部500错误
		
		
	如果找到指定文件或者文件夹下的东西,会返回默认的文件。	
	例子:
		
			server {
				listen 80;
				server_tokens off;
				server_name www.b.com;
					root /data/web/;
				location /images {
					alias /aap/web2/;
					try_files $uri /default.jpg
					}
			      }
		
		
		
		
	
	
	


本文 暂无 评论

Top