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的主要内容,如果未能解决你的问题,请参考以下文章

NginxNginx配置REWRITE隐藏index.php

NginxNginx配置文件解析

NginxNginx基础操作

NginxNginx基础操作

NginxNginx基础操作

NginxNginx基础操作