nginx配置文件详解

2016-12-14 15:59:00
村里来的扫地僧
原创
1019
[root@linux-01 nginx]# vim nginx.conf
#user  nobody;
worker_processes  6;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    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;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #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;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /.ht {
        #    deny  all;
        #}
    }

    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

nginx的配置:
	正常运行的必备配置:
		1,user username [groupname]
			指定运行worker进程的用户和组
					
		2,Pid /path/to/pidfile_name
			指定nginx的Pid文件
			
		3,worker_rlimit_nofile #;
			指定一个worker进程所能打开的最大文件句柄数:
			
		4,worker_rlimit_sigpengding
			设定每个用户能够发送worker进程的信号的数量
			
	优化性能相关的配置:
		1,worker_processes #;
			worker 进程的个数:通常其数值应该为CPu的物理核心数减1;
			
		2,worker_cpu_affinity cpumask ...;
			0000
			0001
			0010
			0100
			
		3,ssl_engine device;
			在存在ssl硬件加速器的服务器上,指定所使用的ssl硬件加速设备 
			
		4,	timer_resolution interval;
			每次内核事件调用返回,都会使用gettimeofday()来更新nginx的缓存时钟:timer_resolution 用于定义每隔多久会由gettimeofday()
			更新一次缓存时钟:基本上不需要设备,在老的设备上需要设置。
		
		5,worker_priority number (nice -20,19之间的值);
			Defines the scheduling priority for worker processes like it is done by the nice command: a negative number means higher priority. Allowed range normally varies from -20 to 20.
	
	事件相关的配置:
		1,accept_mutex on | off;
			是否打开nginx 的负载均衡锁,此锁能够让多个worker进程轮流地,序列化与新的客户端建立TCp连接:而通常worker进程的负载达到上限的7/8,master
			就尽可能不再将请求高度此worker;
			
		2,local_file /path/to/lock_file;
			lock 文件
		3,accept_mutex_delay time #ms;
			accept 锁模式中,一个Worker进程为取得Accept锁的等待时长:如果某Worker进程在某次试图取得锁时失败了,至少要等待#ms 才能再一次请求锁

			Default:	
			accept_mutex_delay 500ms;
			Context:	events
		4,	multi_accept on | off;
			Default:	
			multi_accept off;
			Context:	events
			是否允许一次性地响应多个用户请求:默认为off
		
		5,Use[epool|rtsig|select|poll]
			定义使用事件模型,建议让Nignx自动选择:
		
		6,worker_connections number; Default:	worker_connections 512;
			每个worker能够并发响应最大请求数:
		
	用于调试,定位问题,只调度nginx时使用
		1,daemon [on|off];
			是否让nginx运行后台:默认为On ,调试时可以设置为off,使用所有信息去接输出控制台:
			
		2,master_process on|off
		
		3,Error_log /path/to/error_log level;
			错误日志文件及其级别,高度时可以使用debug级别,但要求在编译时必须使用--with-debug启用debug功能:
			
	nginx的Http_web功能:
		必须使用虚拟主机来配置站点:每个虚拟主机使用一个server{}段配置:
			server {
			
			}
		
		非虚拟主机的配置或者 公共的配置,需要定义在server之外,http之内:
		
			http {
				directive value;
				...
				server {
				
				}
				server {
				
				}
			}
		
		
		1,Server{}
				定义一个虚拟主机:nginx仅支持基于主机名,或IP的虚拟主机
				
		2,Listen
			listen address[:port];
			listen port
			listen unix:socket_file_path
			
			default_server:定义此Server为http中默认的Server:如果所有的Server中没有任何一个listen 使用listen使用此参数,哪么第一Server为
			默认Server
			
			rcvbuf-Size:接收缓冲大小
			sndbuf-Size:发送缓冲大小
			ssl: https server 
		3,Sever_name [主机名];
			Server_name可以跟多个主机名:当nginx收到一个请求时,会取出其首部的Server的值,而后跟众Server_name进行比较:比较方式
				(1) 先做精确匹配    www.zjacp.cn
				(2) 左侧通配符匹配:*.zjcap.cn
				(3) 右侧通配符匹配	www.zjcap.cn,www.*
				(4) 正则表达工匹配  ~^.*.zjcap.cn$
			
			
		4,Server_name_hash_bucket_size 32|64|128;
			为了实现快速主机查找,nginx使用Hash表示来保存主机名:
		
		5,Location[ = | ~ | ~* | ^~ ] uri {...}
		  Location @name {...}
		  功能:允许根据用户请求的URI的需要进行访问配置:匹配到时,将被Location块中的配置所处理:
			
			比如:http://www.zjcap.cn/image/logo.jpg
			
			
			=:精确匹配:
			~:正则表达匹配,匹配时区分大小 写
			~*:正则表达式模式匹配,匹配时忽略大小写
			^~:URI的前半部分匹配,不检查正则表达式
			
			
			匹配优先级:
				字符字面量,按正则表达式检查(由第一个匹配到所处理)、按字符字面量
				
		文件路径定义:
		1,root path
			设置web资源路径:用于指定请求的根文档目录:
			location / {
				root /www/htdcos;
			}
			
			location ^~ /images/ {
				root /web;
			}
		2,alias path
			只能用于location中,用于路径别名:
			 location /{
				root /www/htdcos
			 }
			
			location ^~ /images/ {
				alias /web;
			}
			
			alias: alias/
				http://192.168.32.200/images/b.html
				
				
		3,index file...;
			定义默认页面,可跟多个值:
			
		4,error_page code ... [=[response]] uri;
			当对于某个请求返回错误时,自动 返回到指定到的错误页面 
			
			
		5,try_files file ... uri;
			location /home {
			try_files $uri $uri/index.html $uri.html =404;
			}
			自左至右尝试取path所指定的路径,在第一次找到停止并返回,所有path均不存在,则返回最后个uri
			
		网络连接相关设置:
			1,keepalive_timeout timeout [header_timeout]; keepalive_timeout 75s;
				保持连接的超时时间
				
			2,Keepaived_requests n;
				在一次长连接上允许承载最大的请求数:
				
			3,Keepaived_disable []
发表评论
零 乘 零 =
评论通过审核后显示。