IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Nginx(反向代理 负载均衡,动静分离,防盗链) -> 正文阅读

[系统运维]Nginx(反向代理 负载均衡,动静分离,防盗链)

目录

1. 什么是nginx?nginx能做什么?

2.安装nginx

安装nginx

nginx目录介绍:??

?nginx的多进程模型,他是如何处理多个请求的

?nginx配置文件

虚拟主机与域名解析:

?基于域名的几种互联企业的需求:

3.配置实例详解

? ? ?1.正向代理

2.反向代理

?3.负载均衡

?4.动静分离

?5.防盗链

6.URLReWrite伪静态配置


1. 什么是nginx?nginx能做什么?

? ? ? ??Nginx是一个高性能的http和反向代理服务器,其特点是占用内存小,并发能力强。Nginx专为性能优化而开发,性能是其最重要的考量,能经受高负载的考验,有报告表明能支持高达50000个并发连接数。

1.反向代理

2.负载均衡

3.动静分离

4.防盗链

??重中之重 : nginx的配置实例

2.安装nginx

? 下载地址:Index of /download/

? ??Nginx需要几个依赖包,分别是pcreopensslzlib,在安装nginx之前需要先安装这几个依赖。

1.使用命令下载pcre压缩包

$ sudo yum -y install pcre pcre-devel # 让 nginx 支持重写功能

pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式,所以需要安装pcre库。

2..一键安装剩余依赖:

?yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

安装nginx

  1. nginx官网下载nginx,官网地址:https://nginx.org/download/
  2. 将压缩包拖到服务器上;
  3. 使用命令tar -zxvf ?/usr/local/nginx-1.9.9.tar.gz解压压缩包;
  4. 使用命令./configure检查;

? ? ? ? ?

?

5. 使用命令make && make isntall编译安装;?

?

??

安装成功后,在usr会多出来一个文件夹,local/nginx,在nginxsbin文件夹下有启动脚本。

? ?

? ?

? ? 启动 ./nginx 后查看进程

? 访问:ip

? ? 配置文件:

? ?

? ??

如果开了防火墙 需要把特定的端口打开

nginx目录介绍:??

?存放默认的首页的

?就是这个页面:

?nginx的日志访问日志,错误日志等等,这个要注意,当日志文件写满了怎么办?线上尤其注意

?nginx的多进程模型,他是如何处理多个请求的

nginx启动之后他会先启动一个Master的主进程,主进程呢回去读取检验配置文件,再启动Worker子进程来处理用户的请求。

?nginx配置文件

? ?配置文件详解:Nginx配置文件详解 - 程序员自由之路 - 博客园

? ?

worker_processes:?启动nginx的时候启动多少个worker子进程,基本的原则是一个CPU的内核配置一个worker_processes。CPU有多少内核配置多少的worker_processes

worker_connections:每一个worker可以创建多少个链接。

include:配置文件比较多的时候引入其他的配置文件?mime.types里面都是文件类型的参数,用于服务端告诉浏览器这次返回的是什么文件,再返回的头里面加上这个类型,浏览器就根据这个类型对应的文件后缀来解析

?default_type:如果mime.types没有包含当前的类型,则以这个默认的流的类型返回

?sendfile:需不要将文件从服务器拷贝到nginx的这个应用程序中,开启关闭sendfile方式传输文件,可以在http块、server块或者location块中进行配置

?keepalive_timeout:配置连接超时时间,此指令可以在http块、server块或location块中配置

server块:??

? ?一个server块就相当于一个虚拟主机,多个虚拟主机之间互不干扰。

? ??

listen:监听的端口,

server_name:虚拟主机的域名,域名不同的时候,监听的端口可以相同

location:是用来匹配URI的(资源,就是域名之后的)

root:相对路径

error_page:错误页配置

虚拟主机与域名解析:

?虚拟主机与域名解析:

域名解析:

? ?在域名解析这里添加一条记录?

? ?多租户二级域名就需要泛域名解析:填通配符就行

?如果主机记录什么都不填,没有www的前缀也能解析成功

nginx虚拟主机域名配置

?首先我们要在nginx上创建两个站点,都在根目录下创建

? ?

? 其次修改我们的配置文件

? 访问根目录下的这个文件

? 重启nginx:

??

? ?访问到pro版本的小鹰

? 我们再配置一个plus版的小鹰,再配置一个端口

OK? 现在我们来配置一下server_name,

由于两个域名都不是注册的域名所以我们要配置host文件

重新加载nginx服务? ./nginx -s reload? 以及重新启动虚拟机? reboot

?当然server_name的配置方式可以精确 ,通配符,正则的方式来匹配

?server_name的剩下的匹配方式

? 一个server_name可以配置多个主机名字

? ?

? ?通配符的形式去配置,多租户的二级域名就可以这样配置,? 多个server从上到下匹配? 匹配上了就不再往下。

?正则匹配:

?基于域名的几种互联企业的需求:

? 1.多域名的实现:

? ? ??

2.短网址的实现

?

?3.httpdns

3.配置实例详解

? ? ?1.正向代理

在浏览器中配置代理服务器,通过代理服务器进行互联网访问。

?正向代理的示意图以及存在的问题

?

?如果路由器只有10m,网速是100M,那么下载东西的时候,还是会受限于这个路由器的10M,他进出都是要经过这个路由器,所以瓶颈比较明显。正向代理是从访问者出发,在访问的过程中隐藏了访问者的真实IP,因此你可通过正向代理来进行隐藏你自己的真实IP。

2.反向代理

? 与正向代理的区别就是客户端事无感知的,你不知道你走没有代理的服务,正向代理要在客户端中配置代理服务器,反向代理只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴漏的是代理服务器地址.? 对外暴露的是代理服务器,隐藏的是真实服务器

反向代理的示意图?

? ?反向代理访问的时候也要经过网,比如下载一个文件,下载的请求会很小,但是到了服务器后数据直接从服务器返回客户端,而不是经过网关,这样的话就避免了正向代理的时候网关的限制。

反向代理同正向代理相反,可以隐藏我们真实服务器的一些信息,并且可以在服务端进行一些配置,仅仅允许代理服务器进行代理访问,这样就能够起到一定的防护作用

?反向代理服务器在我们系统架构中的应用场景? 注意我们在正常的的反向代理的时候,可以去伪装一下当前访问的真实的地址,这样面向搜索引擎也有好处

但是当代理一些文件服务的时候,nginx这个时候就会成为性能的瓶颈,所以要使用负载均衡。

反向代理实操

? 在location下面配置proxy_pass,proxy_pass与 root? index是二选一的存在 所以要将他们注释掉

?配置好我们重启nginx后再次访问:就代理到了UFC的中文网页,看到"火箭"拉基奇VS"波兰大锤"布拉乔维奇

注意,如果我配置的时候把www去掉了,可能会起不到代理的效果,直接重定向到了真实的页面去了,还需要注意的是proxy_pass是不支持跳转到https的,

?3.负载均衡

? ??如果请求数过大,单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器的情况改为请求分发到多个服务器上,就是负载均衡。

?负载均衡的配置upstream,要跟proxy_pass配合使用

?启动这两个服务,然后开始访问虚拟机的地址,然后会分别断到两个服务里面一人一次。

如果其中有一台挂掉了,不提供服务了,那么是不是有一半的请求会没有返回呢?当然不是的,负载均衡他是有重试的机制的,如果一台服务不停工服务了,nginx会把请求导向另外一台提供服务的机器上

? 默认的负载均衡的策略是轮询啊,轮询的话有一个问题就是无法保持会话

负载均衡的策略:

权重:

?down 可以让某些机器不参与负载均衡

?backup: 备用机? 其他都没法用了再用它

?还有其他不太常用的负载均衡策略:这些生产环境都不用

?

?4.动静分离

?为了加快服务器的解析速度,可以把动态页面和静态页面交给不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。

?适合中小型网站静态资源不多的情况

? ? 动静分离示意图:

? ??

? ?动静分离最小demo实操,现在我搞一个项目,

? ?有html页面也有图片:

?项目启动的效果如图:

现在我要做动静分离 我要把图片资源放在nginx反向代理的服务器上,

第一步先来给他配置一个反向代理:

访问虚拟机的地址:OK成功的?

? 删除工程里面的图片:

??下面配置静态资源的访问路径:这里需要重新配置一个location,同理,我们的js资源,css资源都可以这样来配置

? 把资源拿到nginx里面去:

??

? ?重新加载nginx配置后访问虚拟机:图片出来了,简单的动静分离成功

?

?更高级的动静分离规则:

正则的方式来匹配?

??

?5.防盗链

?当我们访问代理服务器的时候,返回的html页面里面会引用一些js,图片,css等等。

? 当他们第二次去请求这些资源的时候,虽然访问的是同一个站点,但是他们会在请求头带上这个Referer参数,Referer参数是个什么东西呢?这是Http协议所规定的,由浏览器来遵守的。这个第二次访问的时候才有,第一个请求是没有的。表示要请求的资源是从上一个页面来的。

? 那我们防盗链的话就是判断第二次的请求的Referer是不是第一个请求的就可以了。

配置:

?

?加上none以后 不带refere可以访问,带refere就不能访问了,就是浏览器直接打开是OK的,但是内嵌到其他页面使用就是不行的

?目前curl测试返回的是一个403的状态码,浏览器的请求返回的也是403

现在我们想的是给他返回一个错误的页面 该怎么配置呢?

? 首先在服务器下面弄一个错误的html页面

?配置文件这样去配置:

? 直接return到这个location上也是可以的

?效果:

如果我们想配置一个图片返回呢?整合rewrite 返回图片

6.URLReWrite伪静态配置

? ?还是比较实用的,他能隐藏我们真实的后端服务器的地址,

? ??

? ?rewrite关键字

??

? 正则匹配

?

如何利用nginx做网关访问内网的服务器:

?网关nginx配置代理规则:

? 目标服务器配置防火墙的访问规则:

?这样就能实现服务器不能被外网直接访问,而是通过网关来访问了

? ??

??

??

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-06-01 15:29:48  更:2022-06-01 15:29:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 13:49:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码