Nginx 服务配置 nginx.conf 配置文件详解

一、Nginx的安装

想要使用Nginx,肯定是先要在服务器上进行安装;对于安装在本篇文章中就不讲解,不会的可以看我另一篇文章:Linux下Nginx安装与配置 (yum 软件源下载安装)_MR.骑士道-CSDN博客

二、nginx.conf配置文件

Nginx.conf 配置文件主要分成四部分:

  • main(全局设置),设置的指令将影响其它所有部分的设置;
  • server(主机设置),设置的指令主要用于指定虚拟主机域名、IP和端口;
  • upstream(上游服务器设置,主要为反向代理、负载均衡相关配置),用于设置一系列的后端服务器,设置反向代理及后端服务器的负载均衡;
  • llocation(URL匹配特定位置后的设置),用于匹配网页位置(比如,根目录“/”,“/images”,等等)。

他们之间的关系是:server 继承 main,location继承server;upstream既不会继承指令也不会被继承。它有自己的特殊指令,不需要在其他地方的应用,每部分包含若干个指令:

####################全局部分开始

#配置允许nginx服务器运行的用户和用户组,nobody表示所有用户都可以运行。
user nginx;

#配置nginx运行最多可以产生的worker process数,也可以设置为”auto”,由nginx自动检测。
worker_processes auto;

#配置日志的存放位置,在全局块、http块、server块中都可以配置日志,根据不同的配置位置其作用域也不相同。
#语法: error_log /path/file level;
#默认: error_log / log/error.log error;
#当path/file 的值为 /dev/null时,这样就不会输出任何日志了,这也是关闭error日志的唯一手段;
#leve的取值范围是debug、info、notice、warn、error、crit、alert、emerg从左至右级别依次增大。
#当level的级别为error时,error、crit、alert、emerg级别的日志就都会输出。大于等于该级别会输出,小于该级别的不会输出。
#如果设定的日志级别是debug,则会输出所有的日志,这一数据量会很大,需要预先确保/path/file所在的磁盘有足够的磁盘空间。级别设定到debug,必须在configure时加入 --with-debug配置项。
error_log /var/log/nginx/error.log;

#pid文件(master进程ID的pid文件存放路径)的路径
pid /run/nginx.pid;

#引入其它的配置文件。也可以配置在其它块中,区别在于作用域。
include /usr/share/nginx/modules/*.conf;

####################全局部分结束


####################events部份开始

events {
	
	#配置处理网络消息的事件驱动模型,可选项有select、poll、kqueue、epoll、rtsig、/dev/poll和eventport。默认为epoll。
	use epoll;
	
	#配置每个worker process同时开启的最大连接数。
    worker_connections 1024;
	
	#配置网络连接的序列化,对nginx进程接收到的连接进行序列化,防止多个进程对连接的争抢(解决惊群问题)。
	accept_mutex on;
	
	#配置每个worker process是否同时接收多个新到达的网络连接,此配置默认为off状态,即每个worker process一次只能接收一个新到达的网络连接
	multi_accept on;
}

####################events部份结束


####################http部分开始
http {
	
	#sendfile指令指定 nginx 是否调用sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络IO处理速度,降低系统uptime。
	sendfile            on;
	#此配置与sendfile配置项相关联,表示worker process每次调用sendfile传输的数据量最大不超过此值,设置为0表示无限制。
	sendfile_max_chunk 128k;
	
	
	#定义mime-type,include包含了一个其它的配置文件,里面定义了支持的mime类型及后缀名。
	#default_type配置用于处理前端请求的mime类型,必须是mime.types中定义的mime-type。
	include             /etc/nginx/mime.types;
	default_type        application/octet-stream;
	
	#用了log_format指令设置了日志格式之后,需要用access_log指令指定日志文件的存放路径;
	access_log  /var/log/nginx/access.log  main;

	##日志格式设置。
	#$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;
	#$remote_user:用来记录客户端用户名称;
	#$time_local: 用来记录访问时间与时区;
	#$request: 用来记录请求的url与http协议;
	#$status: 用来记录请求状态;成功是200,
	#$body_bytes_sent :记录发送给客户端文件主体内容大小;
	#$http_referer:用来记录从那个页面链接访问过来的;
	#$http_user_agent:记录客户浏览器的相关信息;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

	#keepalive超时时间。
	keepalive_timeout   65;
	
	#激活tcp_nopush参数可以允许把httpresponse header和文件的开始放在一个文件里发布,积极的作用是减少网络报文段的数量
    tcp_nopush          on;
	
	#激活tcp_nodelay,内核会等待将更多的字节组成一个数据包,从而提高I/O性能
    tcp_nodelay         on;
	
	#max指定缓存的最大数量,如果超出,则最近最少使用(LRU)的缓存将被清除;inactive指定多长时间没有访问则清除此缓存。
	open_file_cache max=65535 inactive=20s;
	
	#每30秒检查一次缓存文件的元信息,如果不是最新的则更新。
	open_file_cache_valid 30s;
	
	#与inactive项相关联,表示inactive时间内的最少访问次数,如果在inactive时间内没有达到此访问次数,则清除此缓存信息。
	open_file_cache_min_uses 1;
	
	#nginx服务器响应超时时间,即nginx与client建立连接后,单次会话中nginx等待client响应超过此值,nginx将自动关闭连接。
	send_timeout 10s;
	
	#影响散列表的冲突率。此值越大,消耗内存则越多,散列key冲突率就越低,检索速度就更快;值越小,消耗内存就越少,冲突率相对就会高一些。
    types_hash_max_size 2048;
	
	#用于设置nginx服务器允许的client request headers buffer size。可根据os分页大小来设置,分页大小可使用getconf PAGESIZE获取。
	client_header_buffer_size 4k;
	
	#启用gzip功能,对响应数据进行在线实时压缩,减少数据传输量。
	gzip on;
	#nginx在响应此类客户端请求时,不使用gzip功能缓存应用数据,msie6表示对IE6浏览器的数据不进行gzip压缩。
	gzip_disable “msie6”;
	#使用gzip压缩功能的最小数据长度,低于此大小的数据不会进行gzip压缩。对大数据压缩效果比较明显,但小数据压缩可能得不偿失。
	gzip_min_length 1024;
	#设置压缩等级,取值范围为1~9,级别1表示压缩程度最低,效率最高,耗时最少;级别9表示压缩程度最高,效率最低,耗时最多。
	gzip_comp_level 1;
	#设置在使用Gzip功能时是否发送带有“Vary:Accept-Encoding”头域的响应头部,该头域的主要功能是告诉接收方发送的数据经过了压缩处理,开启后端效果是在响应头部Accept-Encoding: gzip,对于本身不支持Gzip的压缩的客户端浏览器是有用的。
	gzip_vary on;
	#该指令用于设置Gzip压缩文件使用存储空间的大小,语法gzip_buffers number size。其中number=指定Nginx服务器需要向系统申请存储空间的个数;size=指定每个缓存空间的大小。
	#根据配置项,Nginx服务器在对响应输出数据进行Gzip压缩时需向系统申请number*size大小的空间用于存储压缩数据。通常size为os内存页的大小,可用getconf PAGESIZE来获取。
	gzip_buffers 32 4k;
	#开启时,如果客户端浏览器不支持Gzip处理,Nginx服务器将返回解压后的数据。如果客户端浏览器支持Gzip处理,Nginx服务器忽略该指令设置,仍然返回压缩数据。
	gunzip_static on;
	#设置nginx服务器只对指定的mime-types开启gzip压缩功能。
	gzip_types text/plain text/css text/javascript;
	

	#引入其它的配置文件。也可以配置在其它块中,区别在于作用域。
    include /etc/nginx/conf.d/*.conf;

	#upstream的负载均衡,weight是权重,可以根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的几率越大
	upstream name {
		server 127.0.0.1:8001 weight=5;
		server 127.0.0.1:8002 weight=5;
	}


####################server块开始

    server {
		#此server块监听的端口号:80
        listen       80 default_server;
        listen       [::]:80 default_server;
		
		#此server块对外提供的虚拟主机名称,可以理解为域名(需要设置好dns后才能够直接访问)。此值可以有1个或多个,由空格分隔,默认第1个为主要名称。也可以使用通配符,正则表达式等方式。
        server_name  _;
		
		#等同于apache的document root,指明此虚拟主机的请求根目录,接收到请求后,就会到此根目录寻找相应资源。
        root         /usr/share/nginx/html;
		
		#默认的主页名称。
		index index.html index.htm index.php;
		
		#启用https方式。
		ssl on;
		#设置用于发送数据的缓冲区大小。
		ssl_buffer_size 16k;
		#配置证书crt(pem)保存路径。
		ssl_certificate /etc/skey/a.crt;
		#配置证书key保存路径。
		ssl_certificate_key /etc/skey/a.key;
		#配置加密session重用。
		ssl_session_cache shared:SSL:1m;
		#session超时时间。
		ssl_session_timeout 5m;
		#指定可用的密码算法,必须是openssl库中指定的方式。
		ssl_ciphers HIGH:!aNULL:!MD5;
		#在使用sslv3或tls协议时,指定服务器密码优先于客户端密码。
		ssl_prefer_server_ciphers on;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;


		##location 语法: location [=|~|~*|^~] /uri/ { ... }
		#注意:location时有顺序的,当一个请求有可能匹配多个location时,实际上这个请求会被第一个location处理。
        location / {
			#alias为别名配置,用于访问文件系统,在匹配到URL后,将URL中 匹配到的字段替换成alias 后边的内容。
			alias /usr/local/;
			#根路径配置,用于访问文件系统,在匹配到URI后,指向root配置的路径,并把请求路径附加到其后。
			root /usr/local/;
			#代理配置,用于代理请求,匹配到URI后,转发请求到proxy_pass配置的URL。
			proxy_pass http://127.0.0.1:8003/;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
	
####################server块开始


}
####################http部分结束

注:以上内容仅提供参考和交流,请勿用于商业用途,如有侵权联系本人删除!

你可能感兴趣的:(nginx)