您的位置:首页 > 运维架构 > Nginx

NGINX配置文件学习笔记

2017-02-08 09:18 381 查看
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;
}
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nginx