Nginx安装及配置文件解析
nginx 下载
http://nginx.org/en/download.html
nginx 版本:
- 主线版本
主线版本,即最新版。生产中使用的是稳定版。
本教程采用的nginx1.18版本
[aaa@qq.com nginx]# nginx -V
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
nginx配置文件介绍
main(全局设置)、server(主机设置)、upstream(负载均衡服务器设置)和 location(URL匹配特定位置的设置)。
- main块设置的指令将影响其他所有设置;
- server块的指令主要用于指定主机和端口;
- upstream指令主要用于负载均衡,设置一系列的后端服务器;
- location块用于匹配网页位置。
这四者之间的关系式:server继承main,location继承server,upstream既不会继承其他设置也不会被继承。
在这四个部分当中,每个部分都包含若干指令,这些指令主要包含Nginx的主模块指令、事件模块指令、HTTP核心模块指令,同时每个部分还可以使用其他HTTP模块指令,例如Http SSL模块、HttpGzip Static模块和Http Addition模块等。
以下为nginx1.18版本的主配置文件:
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/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 main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
nginx配置解析
1、全局设置
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
- user是个主模块指令,指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行。
- worker_processes是个主模块指令,指定了Nginx要开启的进程数。每个Nginx进程平均耗费10M~12M内存。建议指定和CPU的数量一致即可。
全局错误日志及PID文件
- error_log是个主模块指令,用来定义全局错误日志文件。日志输出级别有debug、info、notice、warn、error、crit可供选择,其中,debug输出日志最为最详细,而crit输出日志最少。
- pid是个主模块指令,用来指定进程pid的存储文件位置。
worker_rlimit_nofile用于绑定worker进程和CPU, Linux内核2.4以上可用。
工作模式及连接数上线
- events事件指令是设定Nginx的工作模式及连接数上限:
- use是个事件模块指令,用来指定Nginx的工作模式。
Nginx支持的工作模式有
select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平台上,而kqueue用在BSD系统中。
对于Linux系统,epoll工作模式是首选。
epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
- worker_connections单个工作进程的最大并发连接数,它也是个事件模块指令,用于定义Nginx每个进程的最大连接数,默认是1024。最大客户端连接数由worker_processes和worker_connections决定,
即:Max_client=worker_processes*worker_connections。
在作为反向代理时,max_clients变为:max_clients = worker_processes *
worker_connections/4。
进程的最大连接数受Linux系统进程的最大打开文件数限制,在执行操作系统命令ulimit -n 65536
后worker_connections的设置才能生效。
2、http标签
nginx1.18版本的主配置文件,不像之前的版本里面还有很多注释,它很简洁只有以下内容:
http {
include /etc/nginx/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 main; #设定日志格式
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
如果你在学习需要什么可以往里面添加。
-
include是个主模块指令,实现对配置文件所包含的文件的设定,可以减少主配置文件的复杂度。类似于Apache中的include方法。 在这里的作用是设定mime类型,类型由mime.type文件定义
-
default_type属于HTTP核心模块指令,这里设定默认类型为二进制流,也就是当文件类型未定义时使用这种方式,例如在没有配置PHP环境时,Nginx是不予解析的,此时,用浏览器访问PHP文件就会出现下载窗口。
-
log_format是Nginx的HttpLog模块指令,用于指定Nginx日志的输出格式。main为此日志输出格式的名称,可以在下面的access_log指令中引用。
-
sendfile和tcp_nopush
sendfile on;
#tcp_nopush on;
指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件;对于普通应用,必须设为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptim。将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞。
- keepalive_timeout设置客户端连接保持活动的超时时间。在超过这个时间之后,服务器会关闭该连接;默认是65,你可以根据自己的情况进行调整。
3、server和location标签
server标志定义虚拟主机开始,listen用于指定虚拟主机的服务端口,server_name用来指定IP地址或者域名,多个域名之间用空格分开。index用于设定访问的默认首页地址,root指令用于指定虚拟主机的网页根目录,这个目录可以是相对路径,也可以是绝对路径。Charset用于设置网页的默认编码格式。access_log用来指定此虚拟主机的访问日志存放路径,main用于指定访问日志的输出格式。
按照上面的解释,我们可以这么理解:
server_name+listen+location
server { #一个server就是一个网站
listen 80; #监听的端口
server_name www.spokes.com spokes.com #网站的主机名,每个网站必须都不一样
location / { #用于定义网站的根目录
root /pokes; #网站的根目录在根下pokes目录中,放任何地方都可以。
index index.html index2.html #主页/首页,如果第一个找不到,会依次找第二个、第三个;
}
access_log logs/access_ spokes.log main; ##设定本虚拟主机的访问日志
}
上一篇: AngularJs增删改查的方法
下一篇: ZendGuardLoader 安装失败