Nginx系列-配置介绍
# 开篇初衷
上一节老猫和大家分享了Nginx的相关的一些概念,以及一些基础的Nginx的模型,本节开始,和大家一起探讨一下Nginx的一些配置信息,讲清楚所以然,为什么要这么配置,这么配置有什么作用,这是本节的初衷。
# 配置结构以及相关语法
玩过nginx的都知道nginx.conf,nginx的最主要的配置也就是在这个文件中。我们首先看一下这个配置的结构信息。打开nginx.conf文件,我们浏览一下,大概可以得到如下一个结构图。
上述结构图还是比较清晰,老猫相信大多数开发配置nginx的话其实主要是为了做前后端分离的项目,因此,接触最多的也就是http模块中server的配置,对其他的配置有什么作用,应该不是每个人都知道。所以接下来每个模块的详细介绍,且听老猫接下来细细分析。
# 核心配置文件以及介绍
设置worker进程的用户,指的linux中的用户,会涉及到nginx操作目录或文件的一些权限,默认为
nobody
user root;
1worker进程工作数设置,一般来说CPU有几个,就设置几个,或者设置为N-1也行
worker_processes 1;
1nginx 日志级别
debug | info | notice | warn | error | crit | alert | emerg
,错误级别从左到右越来越大设置nginx进程 pid
pid logs/nginx.pid;
1设置工作模式
events { # 默认使用epoll use epoll; # 每个worker允许连接的客户端最大连接数 worker_connections 10240; }
1
2
3
4
5
6http 是指令块,针对http网络传输的一些指令配置
http { }
1
2include 引入外部配置,提高可读性,避免单个配置文件过大
include mime.types;
1设定日志格式,
main
为定义的格式名称,如此 access_log 就可以直接使用这个变量了#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;
1
2
3
4
5参数名 参数意义 $remote_addr 客户端ip $remote_user 远程客户端用户名,一般为:’-’ $time_local 时间和时区 $request 请求的url以及method $status 响应状态码 $body_bytes_send 响应客户端内容字节数 $http_referer 记录用户从哪个链接跳转过来的 $http_user_agent 用户所使用的代理,一般来时都是浏览器 $http_x_forwarded_for 通过代理服务器来记录客户端的ip sendfile
使用高效文件传输,提升传输性能。启用后才能使用tcp_nopush
,是指当数据表累积一定大小后才发送,提高了效率。sendfile on; tcp_nopush on;
1
2keepalive_timeout
设置客户端与服务端请求的超时时间,保证客户端多次请求的时候不会重复建立新的连接,节约资源损耗。#keepalive_timeout 0; keepalive_timeout 65;
1
2gzip
启用压缩,html/js/css压缩后传输会更快gzip on;
1server
可以在http
指令块中设置多个虚拟主机
listen 监听端口
server_name localhost、ip、域名
location 请求路由映射,匹配拦截
root 请求位置
index 首页设置
server { listen 88; server_name localhost; location / { root html; index index.html index.htm; } }
1
2
3
4
5
6
7
8
9
# Nginx中遇到的一些需要注意的点
(1)如果nginx.pid丢失,我们要进行手动创建该文件,并且对nginx服务进行reload重启。如果nginx处于启动状态,我们先要查询当前nginx的进程号码,然后设置到我们的nginx.pid中,然后进行重新reload我们的服务器。
(2)自己配置的配置文件无法找到的时候,我们可以用以下命令./nginx -c +路径的方式,进行设置相关的配置文件信息。
# Nginx中常用命令整理
(1)./nginx -t 校验自己设置的nginx配置文件是否有效。
(2)./nginx -s reload 重新加载nginx的配置文件信息。
(3)./nginx -s quit 功能性优雅地关闭nginx服务,非强制性关闭,如果有客户有所链接,等释放之后才进行关闭。
(4)./nginx -s stop 暴力关闭,直接快速关闭nginx服务,紧急情况下使用该指令。
(5)./nginx -h 或者./nginx -?查询nginx的用法大全。
(6)./nginx -c +path 手动设置相关配置文件信息,指定配置文件路径,多配置下可以手动切换核心配置文件。
(7)./nginx -v简单版本信息 ./nginx -V表示详细版本信息。
# 总结
以上就是我们第二章的学习内容,我们介绍了相关的配置详细信息,另外地也和大家分享了一些常用的nginx的命令。大家可以对着这些去敲一下命令尝试一下。下一章我们介绍nginx中的日志切割。