Nginx教程(2)
文章目录
- 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端口,就支持跨域了):
- 首先在本地准备一个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>
- 运行文件后出现跨域问题
- 配置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' *;
- 再次运行跨域问题得到结果,正确获取到数据
2.2 Nginx解决静态资源防盗链问题
为了防止其它站点访问本站点的图片(或其它静态资源),我们可以对图片资源设置静态防盗链
- 修改html文件并运行
可以发现成功访问到了图片
- 配置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)相关推荐
- agentzh 的 Nginx 教程(版本 2015.03.19) 第一篇
转载:http://openresty.org/download/agentzh-nginx-tutorials-zhcn.html#02-NginxDirectiveExecOrder10 目录 缘 ...
- Nginx 教程:基本概念
戳上面的蓝字关注我们哦! 精彩内容 精选java等全套视频教程 精选java电子图书 大数据视频教程精选 java项目练习精选 英文:netguru,翻译:开源中国 www.oschina.net/t ...
- nginx教程全集汇总(ttlsa出品)
为什么80%的码农都做不了架构师?>>> nginx教程写了一段时间,无意中发现,nginx相关文章已经达到了近100篇了.觉得很有必要汇总到一起,它是我们运维生存时间的一片心 ...
- Nginx教程(一) Nginx入门教程
Nginx教程(一) Nginx入门教程 1 Nginx入门教程 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行.由 ...
- yum安装Nginx教程
yum安装Nginx教程 安装CentOS 7:本人原创 更新yum yum update -y 下载Nginx 安装nginx源 rpm -ivh http://nginx.org/packag ...
- Linux环境下安装及部署Nginx教程
一.安装教程 1.官网下载地址:nginx: download 2.下载教程: 1)选择Stable version版本下载到本地(该版本为Linux版本),下载完成后直接在本地解压后放入linux系 ...
- Linux下安装nginx教程
Linux下安装nginx教程 安装依赖包 #执行一下命令 安装4个依赖包 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl- ...
- 苹果电脑mac安装nginx教程
苹果电脑MAC安装nginx教程 使用homebrew安装,提醒需要翻墙,最后面介绍的源码安装方式不需要翻墙,只需要在墙内搞到源码即可,建议先确认一下自己能否翻墙,如果可以翻墙就用第一种方法,如果不能 ...
- 在centOS7中安装nginx教程
在centOS7中安装nginx教程 在安装nginx之前,确保你的虚拟机能够联网! 安装nginx步骤: 一.安装好nginx所依赖的环境(gcc.PCRE.zlib.Open SSL). 二.安装 ...
- docker安装nginx教程
Docker安装Nginx教程(小白教程) 1.查看可用的 Nginx 版本 Nginx 镜像库:Docker Hub . 我们还可以用 docker search nginx 命令来查看可用版本: ...
最新文章
- 小鱼天气android,小鱼天气(cn.microsoft.cig.uair) - 1.3.14 - 应用 - 酷安
- libevent源码学习-----Reactor模型
- [html] 在head标签中必不少的是什么?
- 结果期待3年多的看图软件
- 将数据导入到mysql_Mongodb数据导入到mysql
- 商业智能BI如何推进制造业转型
- Panoptic FPN-Panoptic Feature Pyramid Networks用于全景分割的特征金字塔网络
- 查找算法------顺序查找
- 特征值和特征向量(整理)
- matlab力学实验,MATLAB在中学物理实验教学的应用
- 堡垒机全称是什么?是运维安全审计系统吗?
- 蓝凌OA自定义公式样例库
- 什么是大数据可视化,有什么作用?
- 一笔画 java_NYOJ42 一笔画问题
- 函数参数缺省值/默认值
- mac 防止 下载 睡眠_如何暂时防止Mac进入睡眠状态
- 攻防世界——pwn_warmup
- 包教包会—全网最易懂的全加器高位进位和低位进位讲解
- 网页设计期末作业ppt+源码(免费获取)
- ubuntu 下超简单的安装微信,QQ等软件
热门文章
- SIFT特征提取与检测
- go操作mysql(原生database/sql, sqlx库)GORM
- 【音视频数据数据处理 12】【H.264篇】解析H.264原始码流中的I帧 / P帧 / B帧数据(暂未解决,本文先放着,来日更新)
- 高通AR加视屏解决方案
- 转播小助手开启微信语音多群同步直播转播之路
- 大家都在用HTTP/2了,而你还没听说过?
- rabbitmq java 测试_RabbitMQ 简单测试
- SAP ABAP 基础知识
- html的公共样式,HTML+CSS入门 CSS公共样式
- 115.n阶方阵求逆