尚硅谷Nginx教程由浅入深--笔记

news2024/11/17 5:40:44

尚硅谷Nginx教程由浅入深--笔记

  • Nginx简介
  • Nginx相关概念
    • 反向代理
    • 负载均衡
    • 动静分离
  • Nginx安装
  • Nginx命令
  • Nginx配置
  • Nginx配置实例
    • 反向代理1
    • 反向代理2
    • 负载均衡
    • 动静分离

Nginx简介

Nginx是一个高性能的HTTP和反向代理服务器,特点是内存占用少,并发能力强。

Nginx相关概念

反向代理

  • 正向代理

在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问。

  • 反向代理

我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器就是一个服务器,暴露的是代理服务器的地址,隐藏了真是服务器的IP地址和端口。

负载均衡

  • 负载均衡

负载均衡是将客服端的请求分发到多台服务器的方法
在这里插入图片描述

动静分离

  • 动静分离

为了加快网站的解析速度,将网站的动态资源(jsp、servlet)和静态资源(html、css、js)分开。
在这里插入图片描述

Nginx安装

  1. 安装prce依赖
./configure
pcre-config --version
  1. 安装其他依赖
yum -y install zlib zlib-devel gcc-c++ libtool openssl openssl-devel
  1. 安装启动Nginx
yum install nginx
systemctl start nginx
systemctl enable nginx

默认安装位置/usr/local/nginx,启动方式:./nginx

  1. 防火墙
firewall-cmd --list-all
firewall-cmd --add-port=80/tcp permanent
firewall-cmd --reload

Nginx命令

命令路径/usr/local/nginx/sbin,可以先配置环境变量。

./nginx -v  # 查看版本号
./nginx  # 启动
./nginx -s stop  # 关闭
./nginx -s reload  # 重新加载

Nginx配置

配置文件路径:/usr/local/nginx/conf

  1. 第一部分 全局快
    配置整体运行的指令

  2. 第二部分 events块
    主要配置服务器的用户网络连接

  3. 第三部分 http块

  • http全局块
  • server块

Nginx配置实例

反向代理1

  1. 实现效果
    浏览器访问www.123.com,跳转到Linux系统的Tomcat页面

  2. 准备工作

  • 安装Tomcat,使用默认端口8080,并启动
  • 开放端口
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload
  1. 具体配置
  • 在Windows中的C:/Windows/System32/drivers/etc/hosts在中配置域名
...
192.168.1.100 www.123.com
  • 在Nginx的配置文件/usr/local/nginx/conf/nginx.conf中配置,配置http块的server块。
server {
        listen       80;
        server_name  192.168.1.100;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            proxy_pass http://127.0.0.1:8080;
            index  index.html index.htm;
        }
  • 测试,浏览器访问www.123.com,显示的是tomcat的页面,访问www.123.com:8080也可以显示tomcat页面,服务器端关闭了8080端口(firewall-cmd --remove-port 8080/tcp --permanent)后,只能通过80端口访问,无法通过8080端口访问。

反向代理2

  1. 实现效果
    访问http://www.123.com:9001/edu/直接跳转到www.123.com:8080/edu/页面
    访问http://www.123.com:9001/vod/直接跳转到www.123.com:8081/vod/页面
  2. 准备工作
  • 准备两个tomcat服务器,一个8080端口,一个8081端口,开放8080,8081,9001端口
  • 创建测试页面
  1. 具体配置
  • 在Nginx的配置文件/usr/local/nginx/conf/nginx.conf中配置,配置http块的server块。
server {
        listen  9001;
        server_name 192.168.1.100;

        location ~ /edu/ {
            proxy_pass http://127.0.0.1:8080;
        }

        location ~ /vod/ {
            proxy_pass http://127.0.0.1:8081;
        }
    }
  1. 测试
    测试结果同实现效果
  2. location说明
    location用户匹配URL,语法如下:
location [ = | ~ | ~* | ^~ ] uri {
	...
}

1、=:用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
2、~:用于表示uri包含正则表达式,且区分大小写
3、~*:用于表示uri包含正则表达式,并且区分大小写
4、^~:用于不含正则表达式的uri前,要求Nginx服务器找到表示uri和请求字符串匹配度最高的location后,立即使用此location处理请求,而不再使用location块中的正则uri和请求字符串做匹配。

负载均衡

  1. 实现效果
    在浏览器中输入http://192.168.1.100/edu/a.html,负载均衡效果,平均到8080和8081端口中。
  2. 准备工作
  • 准备两台tomcat服务器,一台8080端口,一台8081端口。
  • 在两台tomcat里面的webapps目录中,都创建名称是edu的文件夹,在edu文件夹中创建a.html文件,用于测试
  1. 实际配置
    在http块中配置
upstream mystream {
    server 192.168.1.100:8080;
    server 192.168.1.100:8081;
}
server {
	server_name 192.168.1.100;
	location / {
		proxy_pass http://mystream;
	}
}
  1. 负载均衡策略
  • 轮询(默认):按照时间顺序逐一分配到后端服务器
  • weight:weight默认值为1,权重越高被分配的客户端越多
upstream mystream {
    server 192.168.1.100:8080 weight=5;
    server 192.168.1.100:8081 weight=10;
}
  • ip_hash:每个请求按访问IP的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session问题
upstream mystream {
	ip_hash;
    server 192.168.1.100:8080 ;
    server 192.168.1.100:8081 ;
}
  • fair(第三方):按照后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream mystream {
    server 192.168.1.100:8080 ;
    server 192.168.1.100:8081 ;
	fair;
}

注:fair是第三方的,因此需要安装模块,否则会有如下报错

nginx: [emerg] unknown directive “fair” in /usr/local/nginx/conf/nginx.conf:35

动静分离

  1. 什么是动静分离
    动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat处理动态页面。动静分离从目前实现角度来讲大致分为两种,一种是纯粹的把静态文件独立成单独的域名,放在独立的服务器上,也是目前主力推崇的方案;另一种是动态跟静态文件混合发布,通过Nginx来分开。
    通过location指定不同的后缀名称实现不同的请求转发。通过expires参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。具体Expires定义:是给一个资源设定一个过期时间,也就是说无需去服务器端验证,直接通过浏览器自身确认是否过期即可所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件,不建议使用Expires来缓存),这里设置3d,表示在这3天之内访问这个URL,发送一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码304,如果有修改,则直接从服务器重新下载,返回状态码200。
    动静分离图

  2. 准备工作

  • 新建/data目录,下面再新建/data/www/目录和/data/images/目录,将pic-1.png复制到/data/images/目录,将a.html复制到/data/images目录。
  1. 实际配置
    在/usr/local/nginx/conf/nginx.conf中配置如下:
server {
	server_name 192.168.1.100;
	location /www/ {
		/data/;
	}
	location /images/ {     # 指定uri
		/data/;             # 指定路径
		autoindex on;       # 允许目录访问
	}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高铁站高速稳定用网秘籍,赶紧收藏

中秋国庆黄金周将至,销售旺季即将来临。车来车往、人潮涌动,稳定可靠的网络连接,成为了各大小商户抢占市场、掌握流量密码的关键。 在湖南省郴州市,某食品连锁商店负责人正在为店铺网络问题发愁。该连锁店部分销售网点位于繁忙的高…

Pikachu靶场——暴力破解

文章目录 1. 暴力破解1.1 基于表单的暴力破解1.2 验证码绕过(on server)1.3 验证码绕过(on client)1.4 token防爆破?1.5 漏洞防御 1. 暴力破解 暴力破解漏洞是指攻击者通过尝试各种组合的用户名和密码,以暴力方式进入系统或应用程序的方法。它利用了系统或应用程序…

睿趣科技:新手无货源怎么开抖音小店

抖音小店的开设对于许多商家来说是一个有吸引力的选择,尤其是对于那些喜欢短视频和社交媒体的年轻人。然而,对于没有货源的新手来说,这可能是一个令人头疼的问题。这篇文章将为你提供一些解决方案。 首先,你可以考虑从批发市场购买…

掌握SKILL语言:数字IC设计师必备的技能之一

去年在各个平台更新了一篇《数字IC必学之《Skill入门教程》建议收藏!》,阅读量在每个平台都很客观,且这半年以来,不断有粉丝留言想要获取这份资料。看来大家对于SKILL的需求是很大的,想要掌握SKILL语言:数字…

95、Spring Data Redis 之使用RedisTemplate 实现自定义查询 及 Spring Data Redis 的样本查询

Spring Data Redis 之使用RedisTemplate 实现自定义查询 Book实体类 原本的接口,再继承我们自定义的接口 自定义查询接口----CustomBookDao 实现类:CustomBookDaoImpl 1、自定义添加hash对象的方法 2、自定义查询价格高于某个点的Book对象 测试&a…

微信小程序wxs标签 在wxml文件中编写JavaScript逻辑

PC端开发 可以在界面中编写JavaScript脚本 vue/react这些框架更是形成了一种常态 因为模板引擎和jsx语法本身就都是在js中的 我们小程序中其实也有类似的奇妙写法 不过先声明 这东西不是很强大 我们可以先写一个案例代码 wxml代码参考 <view><wxs module"wordSt…

如何与瑞诺司Rhenus 建立EDI连接?

Rhenus Automotive 是德国百年家族企业Rethmann Group的子公司&#xff0c;提供从零部件的有序供应、即装即用模块的组装&#xff0c;一直到整车的组装。主要在全球范围内为劳斯莱斯&#xff0c;宝马&#xff0c;奔驰&#xff0c;奥迪等汽车企业提供智能制造解决方案。 项目挑战…

阿拉伯文排版是如何实现的

背景&#xff1a; 今天开工了&#xff0c;无意间看到多语言的页面&#xff0c;毕竟我们网站也是有多语言的 但是并没有阿拉伯语。但是我很好奇&#xff0c;分析阿拉伯语言的css并没有发现什么猫腻&#xff01; 到底是怎么实现的呢&#xff1f; 解&#xff1a; html dir 属性 …

聊聊MySQL的聚簇索引和非聚簇索引

文章目录 1. 索引的分类1. 存储结构维度2. 功能维度3. 列数维度4. 存储方式维度5. 更新方式维度 2. 聚簇索引2.1 什么是聚簇索引2.2 聚簇索引的工作原理 3. 非聚簇索引&#xff08;MySQL官方文档称为Secondary Indexes&#xff09;3.1 什么是非聚簇索引3.2 非聚簇索引的工作原理…

win7怎么录屏视频?小白也能轻松学会

“win7怎么录屏视频呀&#xff1f;在学校机房上课&#xff0c;电脑都是win7系统的&#xff0c;每次需要录屏的时候都找不到方法&#xff0c;问了老师也解决不了&#xff0c;有人知道win7怎么录屏吗&#xff1f;” Windows 7系统已经逐渐淡出了主流操作系统的行列&#xff0c;但…

JVM上篇之虚拟机与java虚拟机介绍

目录 虚拟机 java虚拟机 简介 特点 作用 位置 整体结构 类装载子系统 运行时数据区 java执行引擎 Java代码执行流程 jvm架构模型 基于栈式架构 基于寄存器架构 总结 jvm的生命周期 1.启动 2.执行 3.退出 JVM的发展历程 虚拟机 所谓虚拟机&#xff0c;指的…

要体验 AI 编程助手吗?

能不能用 AI 编程辅助写代码&#xff1f; 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术&#xff0c;观点&#xff0c;和项目&#xff0c;并将中国优秀开发者或技术…

强化学习实践(二)Gym(安装、环境搭建、运行倒立摆(代码可运行))

1.准备工作 优先选用conda&#xff0c;conda不仅可以安装python&#xff0c;也是环境管理的工具&#xff0c;我们可以通过conda创建python环境&#xff0c;每个环境之间是相互独立&#xff0c;这样不同的环境可以使用不同版本的python&#xff0c;不同版本的开发包&#xff0c;…

UEditorPlus v3.5.0 支持音频组件,字体图标请求合并,服务器配置优化

UEditor是由百度开发的所见即所得的开源富文本编辑器&#xff0c;基于MIT开源协议&#xff0c;该富文本编辑器帮助不少网站开发者解决富文本编辑器的难点。 UEditorPlus 是有 ModStart 团队基于 UEditor 二次开发的富文本编辑器&#xff0c;主要做了样式的定制&#xff0c;更符…

栈溢出至getshell分析及利用

公众号&#xff1a;掌控安全EDU 分享更多技术文章&#xff0c;欢迎关注一起探讨学习 Ret2text&#xff08;源程序中存在system及/bin/sh&#xff09; 控制程序执行程序本身已有的的代码(.text)。栈溢出&#xff0c;存在system()函数以及”/bin/sh”字符串。通过溢出将返回地址…

LeetCode算法心得——有序三元组中的最大值 II (简单的动规思想)

大家好&#xff0c;我是晴天学长&#xff0c;枚举&#xff0b;简单的动态规划思想&#xff0c;需要的小伙伴可以关注支持一下哦&#xff01;后续会继续更新的。 1) .有序三元组中的最大值 II 有序三元组中的最大值 II 给你一个下标从 0 开始的整数数组 nums 。 请你从所有满足 …

STM32F4X UCOSIII 互斥量

STM32F4X UCOSIII 互斥量 互斥量的概念互斥量的工作机制洗手间问题互斥量优先级继承没有优先级继承优先级继承 UCOSIII互斥量API互斥量创建函数互斥量删除函数互斥量申请函数互斥量释放函数 UCOSIII 互斥量例程 互斥量的概念 UCOSIII中的互斥量是一种特殊的信号量&#xff0c;…

重磅!这本SSCI期刊已解除On Hold状态!警惕目前6本SCIE/ESCI期刊被标记!

期刊动态&#xff1a;新增一本SSCI解除“On Hold” 最新消息&#xff0c;SSCI期刊Transformations in Business & Economics在之前被标记为On Hold&#xff0c;目前该标识已取消&#xff01;表示目前该期刊被SSCI数据库正常收录检索。 往期期刊On Hold情况&#xff1a; …

云服务器CVM_云主机_云计算服务器_弹性云服务器-腾讯云

腾讯云服务器CVM提供安全可靠的弹性计算服务&#xff0c;腾讯云明星级云服务器&#xff0c;弹性计算实时扩展或缩减计算资源&#xff0c;支持包年包月、按量计费和竞价实例计费模式&#xff0c;CVM提供多种CPU、内存、硬盘和带宽可以灵活调整的实例规格&#xff0c;提供9个9的数…

递归解析Json,实现生成可视化Tree+快速获取JsonPath | 京东云技术团队

内部平台的一个小功能点的实现过程&#xff0c;分享给大家&#xff1a; 递归解析Json&#xff0c;可以实现生成可视化Tree快速获取JsonPath。 步骤&#xff1a; 1.利用JsonPath读取根&#xff0c;获取JsonObject 2.递归层次遍历JsonObjec&#xff0c;保存结点信息 3.利用z…