首页 > 学院 > 操作系统 > 正文

欢迎使用CSDN-markdown编辑器

2024-06-28 16:01:10
字体:
来源:转载
供稿:网友

NGINX配置文件学习笔记 Nginx 是一个很强大的高性能Web和反向代理服务器.

今天,本地服务无论如何也起不来,nginx的配置文件也看不懂,所以感觉很尴尬,于是拿出了一个小时的时间学习了一下NGINX的配置文件,现在做一下记录. 打开原始的nginx.conf文件 这里写图片描述 其中user用来配置用户或用户组,如果不指定将会默认为nobody, 配置该参数的意义在于: 在linux中所有的存在均可视为文件,其存在权限问题,通过user指定的用户主要是指定其woker PRocess 权限, Woker_processes用来指定nginx的进程数,默认值为1,我在一些资料上看到说建议设置为宿主机的cpu核心数. 当然如果我们的woker_processes设置的值为4,可以加上: Worker_cpu_affinity 0001 0010 0100 1000 这种方法可以将1-4进程分配给单独的核运行,如果有第五个进程,则随机分配. Woker_rlimit_nofile 4096 设置每一个进程的最大文件打开数,一般设置为进程最大连接数(woker_connections)的3-4倍即可. 这里写图片描述这里写图片描述

这一块用来定义全局的错误日志,日志的级别分为:[debug | info | notice | warn | error | crit ], 当然,一般情况下如果没有特殊需求,使用默认即可.

这里写图片描述 pid属性用来定义nginx进程文件存放的位置,一般使用默认即可. 这里写图片描述

Events模块: 其中worker_connections定义了工作进程的最大连接数量,该值不能超过Woker_rlimit_nofile.

在理论上: 每台nginx服务器的最大连接数=worker_processes*worker_connections; 当然events还有其他参数: Accept_mutex on:设置网络连接序列化,防止惊群现象发生,该值默认为on. 惊群现象:http://www.tuicool.com/articles/Nbue2a 其原理为: 设置为ON以后,每个工作线程(worker)按串行的方式来处理连接,一个连接只会唤醒一个工作线程,其余线程继续休眠,但是如果服务器吞吐量较大时,建立关闭该参数. 这里写图片描述 http块:设定http服务器,利用他的反向代理功能提供负载均衡支持. HTTP块可以嵌套多个server,配置缓存代理,第三方模块等. Include mime.types 定义MIME类型和后缀关联的文件的位置.该文件处于nginx.conf同级目录下. 这里写图片描述 其中部分内容如下: 这里写图片描述

Default_type application/actet-stream; 指定在mime.type文件中没有定义到的后缀名处理方法,默认值为 text/plain. Sendfile on :表示是否使用OS的sendfile函数来传输文件,普通的应用建议设置为ON,IO负载重的应设为OFF,默认值为OFF. Tcp_nopush on: 如果sendfile设置为on,此处应该也设置为on,数据包会累积一下,再一起传输,可是适当的提高一些效率. Tcp_nodelay on 默认值为on小的数据 包不等待直接发送,其默认值为ON,当和tcp_nopush同时都为ON时,nginx会平衡这两个功能. Keepalive_timeout 120; 设置长连接超时时间,注意此处单位为秒. Gzip on; 开启gzip压缩输出. Gzip_min_length 1k; 最小压缩文件大小 Gzip_buffers 4 16k; 压缩缓冲区 Gzip_http_version 1.0; 压缩版本,默认为1.1,但是如果前端是squid2.5请使用1.0. Gzip_comp_level 2; 压缩等级 Gzip_type text/plain application/x-javascript text/CSS application/xml; 压缩类型,默认包含text/html. Gzip_vary on; 这里写图片描述 可以使用upstream子模块进行负载均衡服务器的定义. 格式为 upstream 服务名称{ Server IP+端口; } 当然,一个upstream模块,可以配置多个IP地址. 格式为: Upstream 服务名称{ Server IP 地址+prot weight=3; Server IP 地址+prot weight=1; Server IP 地址+prot weight=2; } 这里的weight的值代表分配给所属IP服务器的权重,该值将影响服务器的分配几率; 这里写图片描述 这里写图片描述 Server模块,虚拟主机的配置 在server模块下: Listen 80; 表示将监听80端口. Server_name wwwbaidu.com www.52panda.online;表示监听的域名,域名可以有多个,中间使用空格隔开,域名可以使用正则匹配. Charset utf-8;设置访问的语言编码. Location { ##设置虚拟主机的基本信息 Root 目录; 设置虚拟主机的网站根目录 Index a.html b.php;设置虚拟主机默认访问的网页.

} 这里写图片描述

对/启用反向代理. Proxy_pass 自定义的upstream名称; 表示将使用该upstream提供服务.

这里写图片描述

user nobody; ##配置用户或用户组 user administrator administrators

worker_processes 1;##允许生成的进程数

启动所有级别的日志

error_log logs/error.log; ##错误日志 error_log logs/notice.log notice; ##通知日志 error_log logs/info.log info; ##提示日志 error_log logs/warn.log warn; ##告警日志 error_log logs/crit.log crit; error_log logs/alert.log alert; error_log logs/emerg.log emerg; error_log logs/debug.log debug;

pid pid/nginx.pid; ##指定nginx进程文件存放地址

配置事件驱动模型

events { worker_connections 1024; ##配置最大连接数 }

HTTP块可以嵌套多个server

配置服务

http { include mime.types; ##文件扩展名与文件类型映射表 default_type application/octet-stream; ##默认文件类型 ##自定义日志格式 log_format myLogFormat ‘remoteaddr−remote_user [timelocal]"request” ’ ‘statusbody_bytes_sent “httpreferer”′‘”http_user_agent" "$http_x_forwarded_for”’;

access_log logs/myLogFormat.log myLogFormat;sendfile on; #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。keepalive_timeout 65; ##连接超时时间 默认75S

负载均衡配置

upstream 名称 { ##该名称对应server的location的proxy_pass server 127.0.0.1:8080; }

## 服务配置

server { listen 80; ##监听端口 server_name 域名; ##监听地址

location 正则 { ##匹配满足正则的请求进行下面处理 proxy_pass upstream 的名称; proxy_redirect off ; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header REMOTE-HOST $remote_addr; }}

}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表