Nginx

Posted jingjinggood

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx相关的知识,希望对你有一定的参考价值。

1 Nginx是什么?

Nginx (engine x) 是一个轻量级的、高性能的、基于 Http 的、反向代理服务器,同时还 是一个电子邮件服务器。 Nginx 最初是由俄罗斯人 Igor Sysoev(伊戈尔·赛索耶夫)使用 C 语言为俄罗斯访问量第 二的 Rambler.ru 站点开发的一款服务器。2004 年 10 月发布第一个版本。 国内大型的站点,例如百度、京东、新浪、网易、腾讯、淘宝等,都使用了 Nginx。 

 

2 为什么使用Nginx?

因为Nginx是基于事件的,它不用为每个请求产生新的进程或线程,所以它的内存使用很低

 

3 Nginx特点

  • ? 高并发
  • ? 低消耗
  • ? 热部署
  • ? 高扩展
  • ? 高可用

 

4 正向代理和反向代理

 

正向代理,当客户端无法访问外部资源的时候(由于诸如墙这样的原因),可以通过一个正向代理去间接地访问,所以客户端需要配置代理服务器的ip。

正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理

技术图片

 

 

 

 


2. 反向代理,客户端是无感知代理的存在,以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端。
正向代理

作用:

    1. 保证内网的安全,公网作为访问地址,web服务器谁内网

    2. 负载均衡

 

 技术图片


5.    安装nginx

1. 熟悉Cenos7相关命令(centos7默认没有 netstat 命令,需要安装 net-tools 工具,yum install -y net-tools

开放端口: firewall-cmd --zone=public --add-port=端口号/tcp --permanent    

关端口:firewall-cmd --zone=public --remove-port=端口号/tcp --permanent 

生效配置:firewall-cmd --reload

查看防火墙以开放的端口:firewall-cmd --zone=public --list-ports 

关闭防火墙:systemctl stop firewalld.service

防火墙状态:firewall-cmd --state

查看监听的端口:netstat -lnpt

检查端口被哪个进程占用:netstat -lnpt |grep 端口号

查看端口详细信息:ps 端口号

 

强制关闭端口:kill -9 端口号

tar命令: tar   -zgzip的算法解压或者压缩

-x解压一个tar

-v显示指令执行过程

-f指定要解压/压缩文件名

-c 创建一个tar/压缩

            解压通常用法tar  -zxvf  filename 如果要压缩的话z换成c

1.  官网下载相应nginx版本tar

2. 使用xftp上传到linux

3. 解压tar

4. 安装所需依赖

-  yum install pcre-devel

-  yum install zlib zlib-devel

-  yum install openssl openssl-devel

-  yum -y install gcc gcc-c++ autoconf automake make   安装c++编译环境

5. 进入解压开的nginx-1.16.1文件夹找到 configure 执行   ./ configure

6. 然后执行make nginx是一个完全由C语言编写的程序

make命令是将文件编译就想javajavac一样

在执行make installmake install这个命令是将nginx安装

安装好后可以在./usr/local/目录下发现一个nginx的文件夹.

这个就是安装好后的nginx。安装好后目录结构如下
技术图片

 

 

 

1.    启动nginx

在使用nginx前有几个注意点

1.         Nginx用的是80端口 , 把端口对外开放

firewall-cmd --zone=public --add-port=80/tcp --permanent

firewall-cmd --reload

2.         启动:安装好的nginx目录中有一个sbin,里面是一个nginx(可执行文件执行(./nginx

 

3.         启动后直接在网页输入本机ip即可访问  页面如下

技术图片

 

Nginx常用命令

 技术图片

 

 

 

6 Nginx配置文件的整体结构

技术图片

 

 

1. 从图中可以看出主要包含以下几大部分内容:

  • 全局块

该部分配置主要影响Nginx全局,通常包括下面几个部分:

配置运行Nginx服务器用户(组)
worker process数
Nginx进程PID存放路径
错误日志的存放路径
配置文件的引入

  • events块

该部分配置主要影响Nginx服务器与用户的网络连接,主要包括:

设置网络连接的序列化
是否允许同时接收多个网络连接
事件驱动模型的选择
最大连接数的配置

  • http块

定义MIMI-Type
自定义服务日志
允许sendfile方式传输文件
连接超时时间
单连接请求数上限

  • server块

配置网络监听
基于名称的虚拟主机配置
基于IP的虚拟主机配置

  • location块

location配置
请求根目录配置
更改location的URI
网站默认首页配置

2. 一份配置清单例析

按照前面文章,给出一份简要的清单配置举例:

 

 

 

 

技术图片

 

 

7.Nginx负载均衡

2.1 轮询

轮询方式是Nginx负载默认的方式,顾名思义,所有请求都按照时间顺序分配到不同的服务上,如果服务Down掉,可以自动剔除,如下配置后轮训10001服务和10002服务。

upstream  dalaoyang-server {
       server    localhost:10001;
       server    localhost:10002;
}

2.2 权重

指定每个服务的权重比例,weight和访问比率成正比,通常用于后端服务机器性能不统一,将性能好的分配权重高来发挥服务器最大性能,如下配置后10002服务的访问比率会是10001服务的二倍。

upstream  dalaoyang-server {
       server    localhost:10001 weight=1;
       server    localhost:10002 weight=2;
}

2.3 iphash

每个请求都根据访问ip的hash结果分配,经过这样的处理,每个访客固定访问一个后端服务,如下配置(ip_hash可以和weight配合使用)。

upstream  dalaoyang-server {
       ip_hash; 
       server    localhost:10001 weight=1;
       server    localhost:10002 weight=2;
}

2.4 最少连接

将请求分配到连接数最少的服务上。

upstream  dalaoyang-server {
       least_conn;
       server    localhost:10001 weight=1;
       server    localhost:10002 weight=2;
}

2.5 fair

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream  dalaoyang-server {
       server    localhost:10001 weight=1;
       server    localhost:10002 weight=2;
       fair;  
}

路由

路由

真实服务器

代理服务器

防火墙

 

以上是关于Nginx的主要内容,如果未能解决你的问题,请参考以下文章

将 nginx rtmp 片段发送到 WebRTC

text 有用的nginx命令和片段

linux学习:Nginx--常见功能配置片段与优化-06

HLS NGINX-RTMP [错误] 1281#0:* 58 hls:强制片段拆分:10.002 秒

Nginx 跨域

Nginx配置文件详细介绍