3_企业级Nginx使用-day2

news2025/4/11 19:37:34

企业级Nginx使用-day2

学习目标和内容

1、能够编译安装并使用第三方模块

2、能够理解location语法的作用

3、能够了解URL的rewrite重写规则

4、能够理解防盗链原理和实现

一、第三方模块使用

Nginx官方没有的功能,开源开发者定制开发一些功能,把代码公布出来,可以通过编译加载第三方模块的方式,使用新的功能

第三方模块网址:NGINX 3rd Party Modules | NGINX

##1、编译安装第三方模块

①上传第三方模块压缩包

上传==ngx-fancyindex-v0.4.3.tar.gz==和==tar xvf echo-nginx-module-0.61.tar.gz==,到/root/soft下。

编译安装以上两个Nginx的第三方模块。

②编译升级安装,并升级

shell > tar xvf ngx-fancyindex-v0.4.3.tar.gz
shell > tar xvf echo-nginx-module-0.61.tar.gz
shell > cd /root/soft/nginx-1.16.0
shell > ./configure  --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --add-module=/root/soft/ngx-fancyindex-0.4.3/ --add-module=/root/soft/echo-nginx-module-0.61
shell > make && make install && make upgrade

2、fancy-index

文档介绍:Fancy Index | NGINX

GitHub - aperezdc/ngx-fancyindex: Fancy indexes module for the Nginx web server

fancy-index模块美化列表效果

实现操作步骤:

①查看确认编译模块参数

#查看版本号及其编译参数
shell > /usr/local/nginx/sbin/nginx -V

确认是否包含ngx-fancyindex模块

②配置实现

#可以配置到http、server、location等下。推荐配置到server下
#开启fancy indexes 列表显示功能
fancyindex on;
#显示更为可读的文件大小
fancyindex_exact_size off;

3、echo

echo模块常用来进行调试用,比如输出打印Nginx默认系统变量

示例语法:

location / {
    #输出为文本类型
    default_type text/plain;
    #default_type text/html;
    #打印输出查看变量信息
    echo $document_root;
}

验证是否一下$document_root是否和root设定的值一致

#二、发行版本

1、Nginx社区免费版

nginx news

2、NGINX+商业版

Advanced Load Balancer, Web Server, & Reverse Proxy - NGINX

##3、淘宝的tengine

The Tengine Web Server

tengine是alibaba公司,在Nginx的基础上,开发定制,更加服务自己业务的服务器软件。后来进行了开源。

#解压编译安装
shell > tar xvf tengine-2.3.0.tar.gz
shell > cd tengine-2.3.0
#tengine从2.3.0版本之后,tengine的模块被分离到modules,需要自己手动编译安装
shell > ./configure --prefix=/usr/local/tengine --add-module=/root/soft/tengine-2.3.0/modules/ngx_http_footer_filter_module
shell > make && make install
#查看默认加载的模块和参数信息
shell > /usr/local/tengine/sbin/nginx -V
#tengine 默认提供-m参数  查看已经编译加载的模块

案例:通过tengine内置模块 自动添加页脚信息 标识服务器信息

使用ngx_http_footer_filter_module包含的语法 注意确认是否已经加载此模块

①修改配置文件并重载服务

shell > vim /usr/local/tengine/conf/nginx.conf

语法规则:

#可定义在http、server、location中,建议在server中
#定义需要插入footer的响应类型(Response Content-Type)。
footer_types "text/plain" "text/css" "application/x-javascript";
#在上面定义的HTTP响应的正文结尾插入指定的format内容。如果format中含有变量,会被替换为变量当前的值。
footer "$host_comment";

示例配置:

server {
  listen 80;
  server_name localhost;
  root html;
  #开启加载注释页脚信息
  footer_types "text/plain" "text/css" "application/x-javascript";
  footer "$host_comment";
}

②访问页面查看

4、OpenResty

openresty 在Nginx的基础上,结合lua脚本实现高并发的web平台。作者章亦春

WAF nginx+lua+redis 实现应用型防火墙 动态把IP加入黑名单

官方网址:OpenResty® - 开源官方站

编译安装步骤:

#解压编译并安装
shell > tar xvf openresty-1.15.8.1.tar.gz
shell > cd openresty-1.15.8.1
shell > ./configure --prefix=/usr/local/openresty
shell > make && make install
#查看默认编译参数及其模块
shell > /usr/local/openresty/sbin/openresty -V

案例:使用lua模块语法

①修改配置文件

shell > vim /usr/local/openresty/nginx/conf/nginx.conf

示例配置:

location / {
    root html;
    index index.html index.htm;
    #默认返回类型
    default_type text/html;
    #调用lua模块的语法
    content_by_lua 'ngx.say("hello openresty")';
}

②访问页面查看

三、URL匹配之location

Location 配置语法

Module ngx_http_core_module

##1、location匹配规则

① = 精确匹配

location = / {
    #规则
}

则匹配到 Example Domain 这种请求

② ~ 大小写敏感 区分大小写

location ~ /Example/ {
    #规则
}

请求示例 http://www.example.com/Example/ [成功] http://www.example.com/example/ [失败]

③ ~* 大小写忽略

location ~* /Example/ {
    #规则
}

请求示例 http://www.example.com/Example/ [成功] http://www.example.com/example/ [成功]

④ ^~ 只匹配以 uri 开头

location ^~ /img/ {
    #规则
}

请求实例 以 /img/ 开头的请求,都会匹配上 http://www.example.com/img/a.jpg [成功] http://www.example.com/img/b.mp4 [成功] http://www.example.com/bimg/b.mp4 [失败] http://www.example.com/Img/b.mp4 [失败]

⑤ / 其他匹配都不成功 就匹配此项

location / {
   #规则
}

如果路径是资源文件是存在的,会优先获取资源文件

location匹配优先级

(location =) > (location 完整路径) > (location ^~ 路径) > (location ~,~* 正则顺序) > (location 部分起始路径) > (/)

##2、location匹配跳转

@+name @,nginx内部跳转

location /img/ {
    #如果状态码是404  就指定404的页面为什么
    error_page 404 = @img_err;
}    

location @img_err {    
    # 规则
    return  503;
}

以 /img/ 开头的请求,如果链接的状态为 404。则会匹配到 @img_err 这条规则上

#四、URL重写

==ngx_http_rewrite_module==模块用于使用PCRE正则表达式更改请求URI,返回重定向,以及有条件地选择配置

官方文档地址:<Module ngx_http_rewrite_module

1、return

该指令用于结束规则的执行并返回状态码给客户端.

403 Forbidden.服务器已经理解请求,但是拒绝执行它

404 Not Found.请求失败,请求所希望得到的资源未在服务器上发现.404这个状态码被⼴泛应⽤于当服务器不想揭示为何请求被拒绝,或者没有其他适合的响应可⽤的情况下.

500 Internal Server Error.服务器遇到⼀个未曾预料的状况,导致它无法完成对请求的处理.⼀般来说,这个问题都会在服务器的程序码出错时出现.

502 Bad Gateway.作为网关或代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应.

503 Service Unavailable.由于临时的服务器维护或过载,服务器当前无法处理请求.这个状况是临时的,并且将在一段时间以后恢复.503状态码的存在并不意味着服务器在过载的时候必须使⽤它.某些服务器只不过是希望拒绝客户端的连接.

504 Gateway Timeout作为网关或代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP,FTP,LDAP)或辅助服务器(例如DNS)收到响应。

请求状态码:

HTTP 响应状态码 - HTTP | MDN

示例语法:

#可以匹配到server location if中,推荐配置到location中
return 403;

2、rewrite

rewrite 匹配到请求URI,重写到新的URI

rewrite语法 匹配到,替换为其他内容

语法 rewrite 匹配内容 替代内容 标记

官方文档地址:Module ngx_http_rewrite_module

flag标记说明:

last #本条规则匹配完成后,继续向下匹配新的location URI规则,客户端URL地址不会发生跳转

break #本条规则匹配完成即终止,不再匹配后面的任何规则,客户端URL地址不会发生跳转

redirect #返回302临时重定向,浏览器地址会显示跳转后的URL地址

permanent #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

匹配顺序:多条rewrite,从上到下匹配,匹配到之后就不在匹配其他rewrite规则。

#五、URL相关案例实现

1、案例:资源重定向实现

业务需求描述:

实际业务不存在index.html,需要重写访问index.php

URL为index.html,而实际访问的是index.php,对外被认为是html静态页面

以上方案就是==seo优化伪静态==的使用,把真实的后端的页面,伪装为静态html页面。

①修改配置

shell > vim /usr/local/nginx/conf/nginx.conf

添加配置

rewrite /index.html /index.php last;

③重载配置测试访问

2、案例:域名重定向实现

网站的域名升级了,需要启用新的域名使用。

但是用户却不知道,还可能使用旧的域名访问网站。

需要把通过旧域名访问的来源,重定向到新的域名。

把shop.lnmp.com的请求全部重定向到新域名www.shop.com

rewrite / http://www.shop.com permanent;

示例配置:

#shop.lnmp.com的请求全部重定向到www.shop.com中
server {
               listen 80;
               server_name shop.lnmp.com;
               rewrite / http://www.shop.com permanent;
        }
        server {
                listen 80;
                #绑定新域名即可
                server_name www.shop.com;
                root html/tp5shop/public;
                index index.php index.html;
                #deny 192.168.17.1;
                #auth_basic "shop login";
                #auth_basic_user_file  /usr/local/nginx/conf/passwd.db;
                access_log  logs/shop.lnmp.com_access.log  mylogs;
                location / {
                  rewrite /index.html /index.php last;
                }
                location ~ \.php$ {
                        fastcgi_pass   127.0.0.1:9000;
                        fastcgi_index  index.php;
                        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                        include        fastcgi_params;
                }
                #location ~ \.(js|css) {
                #     expires 2h;
                #}
        }

注意新域名www.shop.com 记得在客户端的hosts文件中解析。

3、案例:防盗链原理和实现

业务需求描述:

域名A的资源文件,经常被域名B直接调用访问。

而用户经常访问域名B,看到的资源(图片等)以为是域名B的,实际则是域名A的。

但是域名A没有从中获得任何收益,缺要给域名B来源的访问耗费服务器资源和带宽。

所以,禁止域名B直接访问和调用域名A的资源的方式,就被称为"防止盗链"

语法:

定义允许访问的域名来源

valid_referers none blocked servername

none blocked 没有referer的情况,直接访问资源的情况

if ($invalid_referer) {}

1、在ip的虚拟主机,静态文件调用图片

2、shop的虚拟主机,禁止ip的虚拟主机调用图片

①ip虚拟主机目录建立静态文件访问shop虚拟主机的图片资源

shell > cd /usr/local/nginx/html
shell > echo '<img src="http://www.shop.com/static/home/img/2.jpg" />' >> img.html

②在shop虚拟主机配置中,防止其他虚拟机主机盗链

#定义在server里  shop的server
#图片请求防盗链
location ~* \.(jpg|png|jpeg|gif|bmp) {
    valid_referers www.shop.com;
	if ($invalid_referer) {
  	    return 404;
	}
}

六、安全

1、反向代理

实现隐藏真实服务的操作,起到一定安全作用

2、隐藏版本号

Nginx对外提供服务,为了避免被针对某个版本的漏洞进行攻击。经常做法是隐藏掉软件的版本信息。提供一定的安全性。

#将以下配置加入到http段配置中
server_tokens off

3、Https和CA

   server {
        listen       443 ssl;
        #绑定好域名
        server_name  web1.heimadevops.top;
        #指定证书相关位置
        ssl_certificate      /usr/local/nginx/conf/1_web1.heimadevops.top_bundle.crt;
        ssl_certificate_key  /usr/local/nginx/conf/2_web1.heimadevops.top.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }
#http跳转到https
server {
    listen 80;
    server_name web1.heimadevops.top;
    rewrite / https://web1.heimadevops.top permanent;
}

客户端注意解析域名

#Tip:Nginx支持pathinfo路径 重写方式

需求

http://www.shop.com/home/goods/index/cate_id/187.html  默认不支持访问
重写成为
http://www.shop.com/index.php?s=home/goods/index/cate_id/187.html

语法规则示例

location / {
   rewrite /index.html /index.php last;
   #判断请求的路径 不存在
   if (!-e $request_filename) {
      # 捕获到所有路径信息   重写为index.php的s参数   last需要匹配之后的location规则
      rewrite ^(.*)$   /index.php?s=$1 last;
   }
}

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

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

相关文章

142873-41-4脂质过氧化抑制剂1-星戈瑞

142873-41-4脂质过氧化抑制剂1 英文名称&#xff1a;Lipid peroxidation inhibitor 1 中文名称&#xff1a;脂质过氧化抑制剂 化学名称&#xff1a;2,4,6,7-四甲基-2-[(4-苯基哌啶-1-基)甲基]-3H-1-苯并呋喃-5-胺 CAS&#xff1a;142873-41-4 外观&#xff1a;固体粉末 分…

关于开展人工智能专业人员“自然语言及语音处理设计开发工程师”专项培训的通知

“人工智能技术与咨询”发布 工业与信息化部电子工业标准化研究院于2022年7月1日发布《人工智能从业技术人员要求》&#xff0c;现针对已发布标准于1月3日至7日在北京举办《自然语言与语音处理设计开发工程师》中级人才培养&#xff0c;下边是具体文件通知请大家查阅。行业人才…

物料 xx 未对销售组织 分销渠道 xx 语言 ZH 定义

查看具体 发现销售视图未维护&#xff0c;库存地点也未维护 即对应的MVKE ,MARD 都没有相关记录&#xff0c; 使得创建销售订单不成功。 解决方案 维护物料视图 mm50 然后选择对应的视图&#xff0c;再点击维护物料&#xff0c;进入到维护物料的视图里面 &#xff0c;填写…

基于Arduino的音乐喷泉设计(论文+源码)

1.系统设计 整个Audio Visualizer系统通过锂电池电源进行供电&#xff0c;当Arduino控制板通过蓝牙音频接收器模块与手机蓝牙完成匹配后&#xff0c;然后通过蓝牙音频接收器模块接收来自手机的音乐&#xff0c;接着通过对音乐进行FFT变换来得到音乐的频率数据&#xff0c;接着…

每日汇评:黄金触及2150美元区域附近的历史新高!

金价回落至2100美元以下&#xff0c;巩固了金价升至2144美元的历史新高的势头&#xff1b; 地缘政治紧张局势再起、美联储降息押注以及流动性不足引发金价大幅上涨&#xff1b; 在日线图上RSI指数超买的情况下&#xff0c;金叉形态仍在发挥作用&#xff1b; 金价最近的飙升可以…

工业机器视觉megauging(向光有光)使用说明书(十二,轻量级的visionpro)

关于最后一个工具的介绍&#xff1a;就是这个“相机图像” 我们可以鼠标双击点进去看一看&#xff1a; 在图像上点击&#xff0c;就可以截取一块图像&#xff0c;是可以放大缩小的&#xff0c;这个放大很low&#xff0c;是我以前研究缩放入门时的版本&#xff0c;本想删除&…

Vue练习 v-model 指令在状态和表单输入之间创建双向绑定

效果&#xff1a; <template><h2>Text Input</h2><input v-model"text"> {{ text }}<h2>Checkbox</h2><input type"checkbox" id"checkbox" v-model"checked"><label for"checkbox…

使用 .NET Upgrade Assistant(升级助手)升级 .NET 老旧版本项目

使用 .NET Upgrade Assistant 升级 .NET 老旧版本项目 .NET Upgrade Assistant 概述.NET Upgrade Assistant 功能1、支持以下代码语言&#xff1a;2、支持的 .NET 升级路径&#xff1a;3、支持的项目类型&#xff1a; .NET Upgrade Assistant 安装1、使用 Visual Studio 扩展安…

《我想假如在这里度过大学生活》火了,不愧是四川最美校园

近日&#xff0c;网上一篇关于成都理工大学校园环境的《我想假如在这里度过大学生活》火了。文章中的提到的大学环境优美&#xff0c;诗意盎然。一则则假如&#xff0c;带我们领略了校园的自然之美&#xff0c;发展之美、同时也感受到了大学时代的美好。 美丽的图书馆、阳光明媚…

想要备考PMP?PMP培训机构怎么选?

PMP是由项目管理协会&#xff08;Project Management Institute&#xff0c;简称PMI&#xff09;发起的项目管理专业人士资格认证&#xff0c;严格评估项目管理人员知识技能是否具有高品质的资格认证考试。作为近几年热门的证书&#xff0c;我国PMP备考人数和持证人数不断上升。…

【源码篇】基于SpringBoot+thymeleaf实现的蓝天幼儿园管理系统

基于SpringBootthymeleaf实现的蓝天幼儿园管理系统 文章目录 系统说明技术选型成果展示账号地址及其他说明 系统说明 基于SpringBootthymeleaf实现的蓝天幼儿园管理系统是为幼儿园提供的一套管理平台&#xff0c;可以提高幼儿园信息管理的准确性&#xff0c;系统将信息准确无误…

红队攻防之隐匿真实IP

0x01 前言 安全态势日益严峻&#xff0c;各大组织普遍采用了综合的安全产品&#xff0c;如态势感知系统、WAF和硬件防火墙等&#xff0c;这些措施加大了渗透测试和攻防演练的难度。即使是一些基本的漏洞验证、端口扫描&#xff0c;也可能导致测试IP被限制&#xff0c;从而阻碍…

SLAM ORB-SLAM2(10)轨迹跟踪过程

SLAM ORB-SLAM2(10)轨迹跟踪过程 1. 总体过程2. ORB 特征点提取2.1. 相机数据处理2.1.1. 单目相机图像处理2.1.2. 双目相机图像处理2.1.3. RGBD相机图像处理2.2. ORB 特征点3. 地图初始化3.1. 坐标形式3.2. 坐标原点3.3. 地图尺度4. 相机位姿初始估计4.1. 关键帧4.2. 运动模型…

全自动洗衣机什么牌子好?内衣洗衣机便宜好用的牌子

随着内衣洗衣机的流行&#xff0c;很多小伙伴在纠结该不该入手一款内衣洗衣机&#xff0c;专门来洗一些贴身衣物&#xff0c;答案是非常有必要的&#xff0c;因为我们现在市面上的大型洗衣机只能做清洁&#xff0c;无法对我们的贴身衣物进行一个高强度的清洁&#xff0c;而小小…

【数据结构与算法】JavaScript实现二叉搜索树

文章目录 一、二叉搜索树的封装1.插入数据2.遍历数据2.1.先序遍历2.2.中序遍历2.3.后续遍历 3.查找数据3.1.查找最大值&最小值3.2.查找特定值 4.删除数据4.1.情况1&#xff1a;没有子节点4.2.情况2&#xff1a;有一个子节点4.3.情况3&#xff1a;有两个子节点4.4.完整实现 …

【蓝桥杯】二分查找

二分查找 题目描述 输入 n n n 个不超过 1 0 9 10^9 109 的单调不减的&#xff08;就是后面的数字不小于前面的数字&#xff09;非负整数 a 1 , a 2 , … , a n a_1,a_2,\dots,a_{n} a1​,a2​,…,an​&#xff0c;然后进行 m m m 次询问。对于每次询问&#xff0c;给出一…

高精度电流源可以做什么实验用

高精度电流源是一种能够提供精确、稳定且可调的电流输出的设备。它在科学研究、工程领域和实验室中扮演着重要的角色。下面西安安泰将详细介绍高精度电流源的用途和应用。 高精度电流源的主要用途如下&#xff1a; 器件测试&#xff1a;高精度电流源可用于测试电子器件的电流特…

CCC联盟数字车钥匙(九)——Passive Entry

2.3 Passive Entry : BLE设置 一旦完成了BLE配对和加密设置&#xff0c;随后与车辆的连接将使用Passive Entry流程。 对于被动进入&#xff0c;能力交换&#xff08;Capability Exchange&#xff09;是以车辆或设备自上次能力交换之后&#xff0c;是否更新DK协议版本、UWB配置…

易点易动二维码巡检方案:提升企业巡检效率的智慧选择

在当今科技发达的时代&#xff0c;传统的纸质设备巡检方式已经无法满足企业管理的需求。纸质巡检方式存在诸多弊端&#xff0c;如巡检效率低、数据管理困难等问题。然而&#xff0c;随着易点易动二维码巡检方案的出现&#xff0c;企业可以迎来一种全新的巡检方式&#xff0c;极…

100G数据中心升级改造策略

视频流媒体的兴起和物联网设备的大幅增长带来数据量爆炸性增长&#xff0c;人们对算力的需求越来越大&#xff0c;网络的升级改造也成为每个数据中心关注的重点。为了应对网络压力&#xff0c;数据中心需要升级到100G及以上速率&#xff0c;为企业和用户提供高性能计算、存储和…