nginx
Posted bkydxy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx相关的知识,希望对你有一定的参考价值。
nginx服务
1 web服务软件种类介绍
1.1 apache
这是中小型web服务的主流
1.2 nginx
大型网站服务的主流,分支tengine
1.3 lighttpd
不温不火的优秀web软件,社区不活跃,静态解析效率很高
2 动态服务的软件
2.1 php
大中小型网址站都会使用,动态网页php程序的解析容器
2.2 tomcat
中小企业动态web服务主流,互联网java容器主流
2.3 resin
大型动态web服务主流,互联网java容器主流
3 nginx软件服务特征介绍
1.支持高并发:能支持几万并发连接(特别是静态小文件业务环境)
2.资源消耗少:在3W并发连接下,开启10个nginx线程消耗的内存不到200M
3.支持异步网络I/O事件模型Epoll apache select
select(同步) apache和nginx epoill(异步)
异步的安全性、稳定性没有同步高,中间容易被人窃取,用户收不到数据
静态业务高并发选择nginx和lighttpd
动态业务理论上nginx和apache
举例说明:宿舍管理员
select模型:会带领一个一个房间查询 挨个询问
epoll模型:进行检索,告诉你资源在哪,让你自己过去找 统一询问
4 nginx功能介绍
1.作为web服务软件(处理用户访问静态请求)
2.反向代理或者负载均衡服务
3.前端业务数据缓存服务
5 编译安装nginx
5.1 下载安装包
5.2 安装依赖
pcre-devel: perl语言正则表达式兼容软件包
openssl-devel:使系统支持https方式访问
yum install -y pcre-devel openssl-devel
5.3 创建用户
5.4 编译安装
①. 编译配置
./configure --prefix=/application/nginx-12.2 --user=www --group=www --with-http_ssl_module --with-http_stub_status_module
--prefix=PATH 指定软件安装在什么目录下
--user=USER 指定软件worker进程管理用户,利用www虚拟用户管理worker进程
--group=USER
--with-http_ssl_module 使nginx程序可以支持HTTPsF访问功能
--with-http_stub_status_module 用于监控用户访问nginx服务情况
②. 编译过程
③. 编译安装
5.5 为nginx程序软件创建链接目录
ln -s /application/nginx-12.2 /application/nginx
5.6 启动nginx程序服务
/application/nginx/sbin/nginx
6 nginx软件程序目录结构
conf --- nginx程序所有配置文件保存目录
nginx.conf nginx程序主配置文件
精简nginx.conf配置文件内容:
grep -Ev "#|^$" nginx.conf.default >nginx.conf
nginx配置文件组成:
①. main nginx主区块
②. event nginx事件区块
③. http nginx http功能区块
④. server nginx 网站主机区块
⑤. location nginx 匹配或者定位区块
html --- nginx程序站点目录
logs --- nginx程序日志文件保存目录
sbin --- nginx程序命令所在目录
nginx命令参数说明:
-V --- 查看nginx软件编译配置参数
-t --- 检查nginx配置文件语法格式是否正确
-s --- 用于管理nginx服务运行状态
stop 停止nginx服务
reload 平滑重启nginx服务器
重启nginx服务
nginx -s stop 先停止
nginx 再启动
7 三个语法格式说明:
①. 大括号要成对出现
②. 每一行指令后面要用分号结尾
③. 每一个指令要放置在指定的区块中
8 虚拟主机配置文件编写方法:
①. 基于域名的虚拟主机配置方法(最常用)
②. 基于端口的虚拟主机配置方法
说明:当你访问的网站域名在虚拟主机配置中不存在时,默认会将第一个虚拟主机的配置页面响应给用户
③. 基于IP地址的虚拟主机配置方法
说明:nginx服务中只要涉及IP地址的修改,都需要重启nginx服务,而不能采用平滑重启
9 nginx服务日志信息
9.1 错误日志
Syntax: error_log file [level];
Default:
error_log logs/error.log error;
Context: main, http, mail, stream, server, location
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
错误日志的,默认情况下不指定也没有关系,因为nginx很少有错误日志记录的。
但有时出现问题时,是有必要记录一下错误日志的,方便我们排查问题。
error_log 级别分为 debug, info, notice, warn, error, crit 默认为crit
该级别在日志名后边定义格式如下:
error_log /your/path/error.log crit;
crit 记录的日志最少,而debug记录的日志最多。
如果nginx遇到一些问题,比如502比较频繁出现,但是看默认的error_log并没有看到有意义的信息,
那么就可以调一下错误日志的级别,当你调成error级别时,错误日志记录的内容会更加丰富
9.2 访问日志
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; --- 调用定义格式信息,生成访问日志
$remote_addr 10.0.0.1 --- 访问客户端的源地址信息
$remote_user - --- 访问客户端认证用户信息 ???
[$time_local] --- 显示访问时间
$request GET / HTTP/1.1 --- 请求行信息
$status 304 --- 状态码信息(304状态码利用缓存显示页面信息)
$body_bytes_sent --- 服务端响应客户端的数据大小信息
$http_referer --- 记录链接到网站的域名信息 ???
$http_user_agent --- 用户访问网站客户端软件标识信息
用户利用客户端浏览器测试访问时,win10默认浏览器会有异常问
$http_x_forwarded_for --- ??? 反向代理
10 nginx配置文件location匹配优先级?
1)等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他匹配项,停止搜索。
2)^~类型表达式,不属于正则表达式。一旦匹配成功,则不再查找其他匹配项,停止搜索。
3)正则表达式类型(~ ~*)的优先级次之。如果有多个location的正则能匹配的话,则使用正则表达式最长的那个。
4)常规字符串匹配类型。按前缀匹配。
5)/ 通用匹配,如果没有匹配到,就匹配通用的
11 如何利用nginx进行访问控制
deny allow
12 利用location区块进行定位
Syntax: location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }
Default: —
Context: server, location
官方链接:https://nginx.org/en/docs/http/ngx_http_core_module.html#location
= 精确匹配网站uri资源信息
~ 区分大小写匹配网站uri资源信息
~* 不区分大小写匹配
^~ 优先匹配
/av/ 指定匹配网站资源
/ 默认匹配
! 对匹配的内容取反
12.1 匹配优先级
= 优先级最高
^~ 优先匹配
~*不区分大小写
// 根据目录匹配
/ 默认匹配
以上是关于nginx的主要内容,如果未能解决你的问题,请参考以下文章