nginx性能优化及主配置文件讲解

nginx主配置文件nginx.conf

nginx配置文件主要分为以下几块:

  1. 全局块:全局配置,对全局生效
  2. events块:配置影响 Nginx 服务器与用户的网络连接
  3. http块:配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置
  4. server块:配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块
  5. location块:用于配置匹配的 uri
  6. upstream:配置后端服务器具体地址,负载均衡配置不可或缺的部分

用vim编辑器进入nginx配置文件

1.全局配置
#user nobody; 					#运行用户,若编译时未指定则默认为 nobody
worker_processes auto; 			#工作进程数量,一般设置为和 CPU 核数一样;设置为auto,nginx将会自己获取这个数值
#error_log logs/error.log; 		#错误日志文件的位置
#pid logs/nginx.pid; 			#PID 文件的位置
worker_rlimit_nofile 60000;		#设置所有worker进程最大可以打开的文件数,默认为1024  

2.I/O 事件配置
events {
    use epoll; 					#使用 epoll I/O模型,2.6及以上版本的系统内核,建议使用epoll模型以提高性能 
    worker_connections 60000; 	#每个进程处理 60000 个连接  
    multi_accept on;            #是否一次性将监听到的连接全接收进来,默认为off,关闭时一次接收一条连接
    accept_mutex on;            #默认为on,开启时表示以串行方式接入新连接,否则将通报给所有worker。这可能会浪费资源并产生不可预计的后果,例如惊群问题
}

还需设置系统级别打开文件数限制

ulimit -a  #显示当前 shell 进程的资源限制信息,包括硬限制和软限制
ulimit -n 65535 #设置为最大值(临时设置)
vim /etc/security/limits.cof #永久设置方式。加入以下两条参数,设置后重启
* soft nofile 65535
* hard nofile 65535  
# *代表任意用户   soft软  hard硬限制

在这里插入图片描述

设置完成后可以看到我这里有四个worker进程,刚好和cpu数量一致

在这里插入图片描述

验证nginx打开文件的最大限制

ps aux|grep nginx
cat /proc/$(ps aux | awk '/nginx: worker process/ {print $2; exit}')/limits
#/proc 是一个特殊的虚拟文件系统,通常用于 Linux 内核提供的进程信息和系统信息的访问。在 /proc 目录下,每个进程都有一个以其 PID(进程 ID)命名的子目录,其中包含了关于该进程的各种信息。除了进程信息外,/proc 目录还包含了其他系统信息和状态。

在这里插入图片描述

http块

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;
	##只在sendfile on时有效。调用tcp_cork方法,让数据包不会马上传送出去,等到数据包最大时,一次性的传输出去,这样有助于解决网络堵塞。默认为off。
    #tcp_nopush     on;
	##连接保持超时时间,单位是秒
    #keepalive_timeout  0;
    keepalive_timeout  65;
	##gzip模块设置,设置是否开启gzip压缩输出
    #gzip  on;
	
	##Web 服务的监听配置
	server {
		##监听地址及端口
		listen 80; 
		##站点域名,可以有多个,用空格隔开
		server_name www.xiaobu.com;
		##网页的默认字符集
		charset utf-8;
		##根目录配置
		location / {
			##网站根目录的位置/usr/local/nginx/html
			root html;
			##默认首页文件名
			index index.html index.php;
		}
		##内部错误的反馈页面
		error_page 500 502 503 504 /50x.html;
		##错误页面配置
		location = /50x.html {
			root html;
		}
	}
}

nginx日志格式设定

  • $ remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;
  • $remote_user:用来记录客户端用户名称;
  • $time_local: 用来记录访问时间与时区;
  • $request: 用来记录请求的url与http协议;
  • $status: 用来记录请求状态;成功是200,
  • $body_bytes_sent :记录发送给客户端文件主体内容大小;
  • $http_referer:用来记录从哪个页面链接访问过来的;
  • $http_user_agent:记录客户浏览器的相关信息;

location常见配置指令

  • root (根路径配置)
  • alias(别名配置)
  • proxy_pass (反向代理配置)

location中root和alias指定路径的区别

root指令用于定义文档根目录,在处理客户端请求时,NGINX会在root指定的目录下查找请求的文件。

location /test {
    root /var/www;
}

#处理方式: root路径+location路径     
http://192.168.50.10/test/abc.html    -->  /var/www/test/abc.html

alias指令也用于定义文件系统路径,但它与root不同,因为它可以用于在URI中重写部分路径。

location /test {
    alias /var/www;
}

#处理方式:alias路径替换location路径    
http://192.168.50.10/test/abc.html    -->  /var/www/abc.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值