Nginx 高级

文章目录

  • Nginx
    • 反向代理
      • 概念
      • 配置
    • 负载均衡
      • 概念
      • 配置
    • 动静分离
      • 概念
      • 配置
    • 网关
    • 防盗链
    • keepalived
    • nginx跨域

Nginx

反向代理

概念

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。通过在网络各处放置反向代理节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。
在这里插入图片描述

正向代理
加速器: 属于正向代理 雷神加速,在我自己的电脑上安装的,启动雷神软件, 雷神给我们访问蓝洞,从蓝洞拿到资源,再给我们。我们是知道蓝洞服务器的地址的。

反向代理
我们开发了一个网站,但是总是收到别人的攻击, www.laohan.com 。 但是为了不让别人直接攻击我的服务器,我就做了一个代理服务器,nginx 。别人通过访问nginx就能代理到我的网址,其实他们是不知道我真正的服务器地址的,他们访问的只是我的nginx的地址。

一般会拿正向代理和方向代理来做对比,本质上来讲,就是看对谁负责

  • 反向代理:代理服务器是对服务器负责,站在服务器的一边的。
  • 正向代理:代理服务器是对客户端负责,站在客户端的一边的。
    在这里插入图片描述
    在这里插入图片描述

配置

这里所有的域名换成自己的域名

域名:xxx.cloud
修改配置文件下的server

 server {listen       80;server_name  www.xxx.work;location / {root   /home/www/www;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}

在location 下添加 代理地址:proxy_pass http://xxx.cloud:8088;

并且注释root 和 index。因为启动了代理之后,那么静态文件就会失效了。

重新启动nginx,访问www.xxx.work 其实就相当于访问http://xxx.cloud:8088

负载均衡

ES/服务器: 容量有限/访问数量有限。 20 服务器,请求进来以后需要将请求平均分配到每个服务器上,将压力平摊。

概念

负载均衡:通过某种特点的算法,将用户的请求合理的分配到集群服务的某个服务器上。高并发的一种方案。

在这里插入图片描述

配置

upstream 和server配合使用

  • 在upstream中起别名 ,并配置多个服务器地址和端口
  • 在server的代理中使用起好的别名 proxy_pass http://别名
http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;#负载upstream serverip{server 192.168.56.131:8088;server 192.168.56.132:8088;}server {listen       80;server_name  www.xxx.work;location / {proxy_pass http://serverip;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}}

在192.168.56.131和192.168.56.132服务器分别部署两个项目,并且启动
在这里插入图片描述

访问域名:www.xxx.work

  • 默认负载方式 轮询。
  • 负载权重
    weight=数字
    server 192.168.56.131:8088 weight=8;
    server 192.168.56.132:8088 weight=2;
  • down
    表示离线,不参加服务
    server 192.168.56.131:8088 weight=8 down;
  • 备用 backup
    正常情况不会使用这个机器,只有其他机器不能用的时候,才启用备用服务器
    server 192.168.56.131:8088 weight=8 backup;
    不停用132服务器的情况下,一直请求 132,当我们手动将132服务器关闭,那么请求就会走131服务器。
  • IP hash
    根据客户端ip地址转发同一台服务器,可以保持会话
  • least_conn
    最少连接访问
  • fair
    根据后端服务器响应时间转发
  • url_hash
    定向url转发

注意:IP hash least_conn fair url_hash在我们实际开发场景里不用
一般开发中我们使用轮询策略+权重(根据服务器性能),配合分布式session技术来开发。

动静分离

适用对象:中小型企业。
动静分离也是优化程序访问速度的一种方式。

概念

当我们向nginx发起请求的时候,nginx会将请求转发到后台服务器,后台服务器在将页面信息给了nginx,然后传递到用户,但是用户的页面会加载很多的静态资源 js css image,其实这些资源没必要再次通过nginx–>后台–>nginx–>用户,我们可以将资源直接放在nginx上,用户需要的资源可以直接从nginx上获取,从而提高响应速度和降低后台服务器的压力。
在这里插入图片描述

配置

记住这里的域名问题,不是复制过来就可以用的

  • 将jar包中的css删除,页面展示的时候 css丢失
  • 将css放入nginx服务html目录中,在server中添加新的location信息,指定加载的css页面,这样就可以从nginx中加载css资源了。
 	server {listen       80;server_name  www.xxx.work;location / {proxy_pass http://serverip;# root   home/www/www;# index  index.html index.htm;}location /css{root html;index index.html;}
  • 但是我们也想将js image font等都可以放到nginx服务器中,但是每个都location /css location /js比较麻烦,我们可以通过正则的方式匹配
 server {listen       80;server_name  www.xxx.work;location / {proxy_pass http://serverip;# root   home/www/www;# index  index.html index.htm;}location ~*/(js|css|image|img|lib){root html;index index.html;}

~*表示正则的开始, | 表示或者 ,然后将静态资源都放到 nginx中 即可。

网关

  • 内网代理

131服务开启防火墙,然后就不能直接访问了

systemctl start firewalld

firewall-cmd --reload

systemctl restart firewalld

  • 指定端口和ip访问

firewall-cmd --permanent --add-rich-rule=“rule family=“ipv4” source address=“192.168.56.181” port protocol=“tcp” port=“8088” accept”

  • 移除规则

firewall-cmd --permanent --remove-rich-rule=“rule family=“ipv4” source address=“192.168.56.181” port port=“8088” protocol=“tcp” accept”

firewall-cmd --list-all

  • 通过我们的nginx代理服务器还是能访问到的。
  • 我们的131服务器以后只能通过130服务器访问,130就像一个大门,是进入131的唯一通道,我们也把130服务器叫做网关服务器。在这里插入图片描述

防盗链

盗链:是指在自己的页面上展示一些并不在自己服务器上的内容。通常的做法是通过技术手段获得它人服务器上的资源地址,绕过别人的资源展示页面,直接在自己的页面上向最终用户提供此内容。比较常见的是一些小站盗用大站的资源(图片、音乐、视频、软件等),对于这些小站来说,通过盗链的方法可以减轻自己服务器的负担,因为真实的空间和流量均是来自别人的服务器。

b:130 很多资源

a:140 nginx做代理,代理b 访问a的地址,其实就是在访问b,a就可以在自己的服务器页面上打广告,利用b的资源吸引流量。

  • 再配置一个nginx服务器140, 140服务器代理130服务器。
    在这里插入图片描述
    访问 192.168.56.130
    在这里插入图片描述
    其实所有的静态资源都是从我们130服务器上加载的。

将以下代码添加到静态资源代码里,并且重新加载nginx服务器。

valid_referers 192.168.56.130;
if ($invalid_referer) {
return 403;
}

location ~*/(css|js|images|img|lib){valid_referers 192.168.56.130;if ($invalid_referer) {return 403;}root html;index index.html;
}

重新访问140服务器,可以靠到访问的静态资源都是403禁止访问的。

  • 原理: 访问时的refer和资源服务器上配置的refer是否一样,不一样就不让访问。
  • curl测试防盗链:
    • curl -I http://192.168.56.130/img/07.jpg
    • I 只显示头信息
    • curl -e “http://192.168.56.130” -I http://192.168.56.130/img/07.jpg -e 表示引用信息
      在这里插入图片描述

keepalived

yum install -y keepalived

cd /etc/keepalived

vi keepalived.conf

130服务器配置

! Configuration File for keepalivedglobal_defs {router_id lb130}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.56.166}
}

220 服务器配置

! Configuration File for keepalivedglobal_defs {router_id lb220}vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 50advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.56.166}
}

systemctl start keepalived

systemctl status keepalived

systemctl restart keepalived

  • 原理: 192.168.56.166是一个虚拟地址,和各个服务器的ip地址关联(但是只能关联一个),默认是给主服务器的,如果主服务器挂了,那么这个虚拟ip就和从服务器关联。

nginx跨域

一般解决的是前端静态页面在不同服务器之间的访问。

# 在server下添加配置文件#允许跨域请求的域,* 代表所有add_header 'Access-Control-Allow-Origin' *;#允许带上cookie请求add_header 'Access-Control-Allow-Credentials' 'true';#允许请求的方法,比如 GET/POST/PUT/DELETEadd_header 'Access-Control-Allow-Methods' *;#允许请求的headeradd_header 'Access-Control-Allow-Headers' *;

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/587555.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

美联储,非必要,不降息

美联储“没必要、没空间、没动力”降息,也会尽量避免货币政策干扰大选,用“口头降息”代替实际调整是现实选择,市场降息预期将继续推迟和下调。 前言: 当前美国经济从各个方面看均并未表现出疲态——新增就业持续修复,…

JVM 内存溢出排查

说明:记录一次JVM内存溢出的排查过程; 场景 项目开发完成后,首次提交到测试环境。测试、产品同事反馈页面先是操作响应慢,抛出超时异常,最后直接无法使用。查看日志后得知是内存溢出。 重启服务后,我对前…

苹果开发者账号注册后生成开发证书和发布证书的流程解析

转载:注册苹果开发者账号的方法 在2020年以前,注册苹果开发者账号后,就可以生成证书。 但2020年后,因为注册苹果开发者账号需要使用Apple Developer app注册开发者账号,所以需要缴费才能创建ios证书了。 所以新政策出…

使用kubeadm工具搭建Kubernetes集群

本文目录 一、CentOS7最小化安装(master)1、下载ISO镜像2、安装3、进入centos安装界面4、安装最小化安装必要的一些工具 二、克隆虚拟机(node1、node2)三、基础配置1、节点规划——部署架构图2、防火墙和SElinux配置2、主机名和ho…

关于不同AR(增强现实)SDK(软件开发工具包)的汇总和特性描述

以下是每个AR SDK的核心内容概述: ARCore 开发者:Google支持平台:Android(部分设备不支持)功能:运动追踪、平面追踪、点云图、云锚点、光照估计、环境探针、人脸追踪、2D图片追踪、人物遮挡、射线测试。官网链接:ARCoreARKit 开发者:Apple支持平台:iOS(iPhone和iPad)…

2024年最新版FL Studio21.2.3 Build 4004 for Mac 版激活下载和图文激活教程

FL studio21中文别名水果编曲软件,是一款全能的音乐制作软件,包括编曲、录音、剪辑和混音等诸多功能,让你的电脑编程一个全能的录音室,它为您提供了一个集成的开发环境,使用起来非常简单有效,您的工作会变得…

合并两个单链表

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 但行前路,不负韶华&#…

环信IM集成教程——Web端UIKit快速集成与消息发送

写在前面: 千呼万唤始出来,环信Web端终于出UIKit了!🎉🎉🎉 文档地址:https://doc.easemob.com/uikit/chatuikit/web/chatuikit_overview.html 环信单群聊 UIKit 是基于环信即时通讯云 IM SDK 开…

微信小程序自定义弹窗组件

业务背景&#xff1a;弹窗有时字体较多&#xff0c;超过7个字&#xff0c;不适用wx.showToast. 组件代码 <view class"toast-box {{isShow? show:}}" animation"{{animationData}}"><view class"toast-content" ><view class&q…

2024总结的vue3的面试题

一、vue2和vue3的区别 答案&#xff1a; 1、数据绑定原理不同 vue2&#xff1a;vue2的数据绑定是利用ES5的一个API&#xff1a;Object.definePropert() 对数据进行劫持&#xff0c;结合发布订阅模式的方式来实现的。 vue3&#xff1a;vue3中使用了ES6的Proxy API对数据代理…

大数据学习第十二天(hadoop概念)

1、服务器之间数据文件传递 1&#xff09;服务器之间传递数据&#xff0c;依赖ssh协议 2&#xff09;http协议是web网站之间的通讯协议&#xff0c;用户可已通过http网址访问到对应网站数据 3&#xff09;ssh协议是服务器之间&#xff0c;或windos和服务器之间传递的数据的协议…

ubuntu-server部署hive-part4-部署hive

参照 https://blog.csdn.net/qq_41946216/article/details/134345137 操作系统版本&#xff1a;ubuntu-server-22.04.3 虚拟机&#xff1a;virtualbox7.0 部署hive 下载上传 下载地址 http://archive.apache.org/dist/hive/ apache-hive-3.1.3-bin.tar.gz 以root用户上传至…