文章目录

  • 2.1 Nginx解决跨域问题
  • 2.2 Nginx解决静态资源防盗链问题
  • 2.3 Nginx的模块化体系
  • 2.4 Nginx集群负载均衡
  • 2.5 四层负载均衡和七层负载均衡
  • 2.6 使用Nginx构建Tomcat集群

2.1 Nginx解决跨域问题

所谓的跨域问题是指,比如我们现在我们访问域名www.imooc.com,在主页我们可能要同于异步访问淘宝和其它域名,这些域名与imooc不属于同一个域,而这些跨域访问通常是被拒绝的,这个问题就是所谓的跨域问题,解决跨域问题我们是通过Cors跨域资源共享来解决的,其允许浏览器向跨Origin的服务器发起js请求获取响应,实现跨域的形式通常有三种,分别是Jsonp、springBoot Cors 和Nginx。下面展示如何在nginx中配置(现在访问80端口,就支持跨域了):

  1. 首先在本地准备一个html文件
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!-- 开发环境版本,包含了有帮助的命令行警告 --><script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script></head>
<body><h1>test</h1><div id="nginxCors"></div><script type="text/javascript">var index=new Vue({el:"#nginxCors",data:{},created() {this.testCors();},methods: {testCors(){var serverUrl="http://www.imooc.com:90/images/logo.jpg";
//这里我在host文件中对域名进行了绑定,为原来的ip地址指定了域名(这里可以童工修改host文件或通过软件SwitchHost)axios.get(serverUrl,{}).then(res=>{console.log(res);});}},})</script>
</body>
</html>
  1. 运行文件后出现跨域问题
  2. 配置nginx重启nginx解决跨域问题
#允许跨域请求的域,*代表所有
add_header 'Access-Control-Allow-Origin' *;
#允许带上cookie请求
add header 'Access-Control-Allow-Credentials' 'true';
#允许请求的方法,比如Get/Post/Put/Delete
add_header 'Access-Control-Allow-Methods' *;
#允许请求的header
add_header 'Access-Control-Allow-Headers' *;

  1. 再次运行跨域问题得到结果,正确获取到数据

2.2 Nginx解决静态资源防盗链问题

为了防止其它站点访问本站点的图片(或其它静态资源),我们可以对图片资源设置静态防盗链

  1. 修改html文件并运行

可以发现成功访问到了图片

  1. 配置nginx防盗链
      #对源站点进行验证valid_referers *.imooc.com; #非法引用进行下面判断if($invalid_referer){return 404;}


现在图片文件就请求不了了,并返回了404

2.3 Nginx的模块化体系

对于nginx,首先它有一个nginx core,是nginx最核心的内容,里面实现了底层的一些通信协议,并为其它nginx的其他模块和进程提供了运行的环境;nginx core主要分为两个主要模块,其中一个是http模块,另一个是mail模块。主要组成如下:


event module:事件模块
phase handler:用于处理客户端的请求,处理后负责内容的一个响应
output filter:在phase handler处理完后,会经过一个这个过滤器,它会过滤掉一部分内容然后返回给浏览器
upstream:反向代理模块,它会把用户请求转发到真实的服务器地址,进行响应
load balancer:负载均衡器,用于实现集群
extend module:继承模块,用于实现第三方

2.4 Nginx集群负载均衡

负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

用户的请求痛殴Nginx处理,分发到不同的服务器进行处理,这些服务器我们叫做upstream

2.5 四层负载均衡和七层负载均衡

四层负载均衡指的是通过ip+端口进行转发;七层负载均衡指的是通过URL、浏览器类别、语言等应用层信息进行转发。七层负载均衡举个例子,如果你的Web服务器分成两组,一组是中文语言的,一组是英文语言的,那么七层负载均衡就可以当用户来访问你的域名时,自动辨别用户语言,然后选择对应的语言服务器组进行负载均衡处理。(负载均衡原理可以看我这个ppt)这里不作详细讲解。

2.6 使用Nginx构建Tomcat集群

创建四台虚拟机,一台作为Nginx代理服务器,另外三台作为Tomcat服务器,其IP地址如下

服务器名称 IP地址
Nginx代理服务器 172.16.23.145
tomcat1 172.16.23.146
tomcat2 172.16.23.147
tomcat3 172.16.23.148

全部使用FinalShell进行了连接,集群服务器都已经安装了Tomcat服务

每个集群服务器的Tomcat都已经启动(注意关闭防火墙),下面在Nginx服务器的conf文件中进行上游配置

#配置上游服务器upstream tomcats{server 172.16.23.146:8080;server 172.16.23.147:8080;server 172.16.23.148:8080;}server {listen 80;server_name www.tomcats.com;location /{proxy_pass http://tomcats;}
}

在switchHost中配置域名映射(也可以直接在本机的host文件中配置)


以上Tomcat的一个简单集群就搭建完了

Nginx教程(2)相关推荐

  1. agentzh 的 Nginx 教程(版本 2015.03.19) 第一篇

    转载:http://openresty.org/download/agentzh-nginx-tutorials-zhcn.html#02-NginxDirectiveExecOrder10 目录 缘 ...

  2. Nginx 教程:基本概念

    戳上面的蓝字关注我们哦! 精彩内容 精选java等全套视频教程 精选java电子图书 大数据视频教程精选 java项目练习精选 英文:netguru,翻译:开源中国 www.oschina.net/t ...

  3. nginx教程全集汇总(ttlsa出品)

    为什么80%的码农都做不了架构师?>>>    nginx教程写了一段时间,无意中发现,nginx相关文章已经达到了近100篇了.觉得很有必要汇总到一起,它是我们运维生存时间的一片心 ...

  4. Nginx教程(一) Nginx入门教程

    Nginx教程(一) Nginx入门教程 1 Nginx入门教程 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行.由 ...

  5. yum安装Nginx教程

    yum安装Nginx教程   安装CentOS 7:本人原创 更新yum yum update -y 下载Nginx 安装nginx源 rpm -ivh http://nginx.org/packag ...

  6. Linux环境下安装及部署Nginx教程

    一.安装教程 1.官网下载地址:nginx: download 2.下载教程: 1)选择Stable version版本下载到本地(该版本为Linux版本),下载完成后直接在本地解压后放入linux系 ...

  7. Linux下安装nginx教程

    Linux下安装nginx教程 安装依赖包 #执行一下命令 安装4个依赖包 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl- ...

  8. 苹果电脑mac安装nginx教程

    苹果电脑MAC安装nginx教程 使用homebrew安装,提醒需要翻墙,最后面介绍的源码安装方式不需要翻墙,只需要在墙内搞到源码即可,建议先确认一下自己能否翻墙,如果可以翻墙就用第一种方法,如果不能 ...

  9. 在centOS7中安装nginx教程

    在centOS7中安装nginx教程 在安装nginx之前,确保你的虚拟机能够联网! 安装nginx步骤: 一.安装好nginx所依赖的环境(gcc.PCRE.zlib.Open SSL). 二.安装 ...

  10. docker安装nginx教程

    Docker安装Nginx教程(小白教程) 1.查看可用的 Nginx 版本 Nginx 镜像库:Docker Hub . 我们还可以用 docker search nginx 命令来查看可用版本:  ...

最新文章

  1. 小鱼天气android,小鱼天气(cn.microsoft.cig.uair) - 1.3.14 - 应用 - 酷安
  2. libevent源码学习-----Reactor模型
  3. [html] 在head标签中必不少的是什么?
  4. 结果期待3年多的看图软件
  5. 将数据导入到mysql_Mongodb数据导入到mysql
  6. 商业智能BI如何推进制造业转型
  7. Panoptic FPN-Panoptic Feature Pyramid Networks用于全景分割的特征金字塔网络
  8. 查找算法------顺序查找
  9. 特征值和特征向量(整理)
  10. matlab力学实验,MATLAB在中学物理实验教学的应用
  11. 堡垒机全称是什么?是运维安全审计系统吗?
  12. 蓝凌OA自定义公式样例库
  13. 什么是大数据可视化,有什么作用?
  14. 一笔画 java_NYOJ42 一笔画问题
  15. 函数参数缺省值/默认值
  16. mac 防止 下载 睡眠_如何暂时防止Mac进入睡眠状态
  17. 攻防世界——pwn_warmup
  18. 包教包会—全网最易懂的全加器高位进位和低位进位讲解
  19. 网页设计期末作业ppt+源码(免费获取)
  20. ubuntu 下超简单的安装微信,QQ等软件

热门文章

  1. SIFT特征提取与检测
  2. go操作mysql(原生database/sql, sqlx库)GORM
  3. 【音视频数据数据处理 12】【H.264篇】解析H.264原始码流中的I帧 / P帧 / B帧数据(暂未解决,本文先放着,来日更新)
  4. 高通AR加视屏解决方案
  5. 转播小助手开启微信语音多群同步直播转播之路
  6. 大家都在用HTTP/2了,而你还没听说过?
  7. rabbitmq java 测试_RabbitMQ 简单测试
  8. SAP ABAP 基础知识
  9. html的公共样式,HTML+CSS入门 CSS公共样式
  10. 115.n阶方阵求逆