之前我们已经了解了nginx的安装,启动,升级的内容,这里我们就讲解一下nginx非常重要的内容,如何设置配置文件。
解读配置文件
在nginx安装目录下,有个conf文件夹,下面存放着nginx的配置文件
里面有个nginx.conf文件,是nginx启动的默认的配置文件。我们查看一下配置文件的内容
我们看一下配置文件里面值代表什么含义。
#user nobody; --user指令,表示以哪个用户运行nginx程序,nobody是个权限比较低的用户
worker_processes 1; --启动进程数,通常设置成 cpu的核数,通过 cat /proc/cpuinfo 看cpu参数
#error_log 全局错误日志,
#nginx的error_log类型如下(从左到右:debug最详细 crit最少):
#[ debug | info | notice | warn | error | crit ]
#例如:error_log logs/nginx_error.log crit;
#解释:日志文件存储在nginx安装目录下的 logs/nginx_error.log ,错误类型为 crit ,也就是记录最少错误信息;
error_log logs/error.log;
error_log logs/notice.log notice;
error_log logs/info.log info;
#PID文件,记录当前启动的nginx的进程ID
pid logs/nginx.pid;
#工作模式及连接数上限
events {
use epoll; #epoll是多路复用IO中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
worker_connections 1024; #单个后台worker process进程的最大并发链接数
}
下面就是http模块,就是设置http服务
#设定mime类型,类型由mime.type文件定义
#输出格式
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 /var/log/nginx/access.log;
#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
#必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
sendfile on;
#连接超时时间
keepalive_timeout 65;
#开启gzip压缩 ,压缩有利于提升网络的传输速度
#但非常小的文件 不需要压缩,压缩反而会影响速度
gzip on;
#设定反向代理服务器列表
#weigth参数表示权值,权值越高被分配到的几率越大
upstream myserver {
server 192.168.1.2 weight=5;
server 192.168.1.3 weight=1;
server 192.168.1.4 weight=6;
}
反向代理服务器列表,表示访问myserver请求,会挑选服务器列表中的一个服务器进行转发请求,从而达到负载均衡分解请求压力效果;如何挑选服务器,有随机规则、权重规则或ip_hash规则,以后会介绍规则的设定。
下面就到server模块,server代表就是虚拟主机服务,配置服务的,可以有多个server模块
#侦听80端口
listen 80;
#设置编码
#charset koi8-r;
#定义使用此服务的访问域名或ip
server_name localhost;
#设定本虚拟主机的访问日志
access_log logs/server1.access.log main;
下面就到了location模块,location表示路由规则,也就是用户请求的url地址,那nginx如何路由分配请求,以后会重点讲解location的路由规则
location / {
root /html; #定义服务器的默认网站根目录位置
index index.html index.htm; #定义首页索引文件的名称
proxy_pass http://myserver ;#请求转向myserver定义的服务器列表
}
# 定义错误提示页面
error_page 500 502 503 504 /50x.html; #出现500,502,503,504错误 就路由请求 /50x.html
location = /50x.html {
root /html;
}
以上就大概介绍了,nginx配置文件的核心指令;那么是不是配置文件都要有以上指令元素呢?当然不需要全都有,但nginx最小的配置模块一定要有,如下所示
worker_processes 1;
events {
# 一般是配置nginx进程与连接的特性
# 如1个word能同时允许多少连接,一个子进程最大允许连接1024个连接
worker_connections 1024;
}
# 配置HTTP服务器配置段
http {
# 配置虚拟主机段
server {
# 定位,把特殊的路径或文件再次定位。
location {
}
}
}
以上元素一定要在配置文件中体现,当然关于一些高级配置,大家有兴趣可以网上深入去了解下,老顾在这里就不多讲了