Nginx 高级应用

news2024/11/27 0:15:19

目录

一.使用alias实现虚拟目录

二. 通过stub_status模块监控nginx的工作状态

三. 使用limit_rate限制客户端传输数据的速度

四. nginx虚拟主机配置

1.基于端口的虚拟主机

2. 基于IP的虚拟主机 

3. 基于域名的虚拟主机


 

 

nginx配置文件:                     /etc/nginx/nginx.conf

nginx额外的配置文件目录 :  /etc/nginx/nginx.conf.d

nginx默认网站发布目录:      /usr/share/nginx/html

 

一.使用alias实现虚拟目录

实验设备:Rocky_linux9.4 

实验IP    :  192.168.226.139

实验准备:关闭防火墙和selinux

首先修改原配置文件,在server块中root对应的发布目录,最后加上/ceshi  

    server {
        listen       80;
        listen       [::]:80;
        server_name  _;
        root         /usr/share/nginx/html/ceshi;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }

然后进行执行如下命令:

mkdir /usr/share/nginx/html/ceshi

echo "webserver" > /usr/share/nginx/html/ceshi/index.html

echo "alias" > /usr/share/nginx/html/index.html

systemctl restart nginx

现在打开在浏览器访问nginx主机的IP地址 http://192.168.226.139/ceshi

 可以看到访问到webserver字样的网页

现在把nginx.conf配置文件中在server块中加入location块,引入alias关键字

    server  {
        listen       80;
        listen       [::]:80;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

       location /ceshi {
           alias   /usr/share/nginx/html;
           index  index.html;  
        }

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }

然后重启nginx

systemctl restart nginx

 然后刷新网站http://192.168.226.139/ceshi发现看到alias页面

再将nginx.conf配置文件中前面加的 alias改成root,然后重启nginx

       location /ceshi {
           root   /usr/share/nginx/html;
           index  index.html;  
        }
systemctl restart nginx

再刷新网页发现又变回webserver页面了

 

可见alias作用:

alias 指令在 Nginx 中的作用是将指定的 URI 路径映射到文件系统中的一个目录。与 root 指令不同的是,alias 完全替换了匹配到的 URI 部分,而 root 只是追加到匹配到的 URI 之后。 

在上面的例子中虽然访问是http://192.168.226.139/ceshi/ ,但是alias参数会把替换掉/ceshi,然后访问默认发布目录。

二. 通过stub_status模块监控nginx的工作状态

 

实验设备:Rocky_linux9.4 

实验IP    :  192.168.226.139

实验准备:关闭防火墙和selinux

1. 通过 nginx -V 命令查看是否已安装 stub_status 模块,默认安装nginx就有这个模块

2. 编辑 /etc/nginx/nginx.conf 配置文件

vim /etc/nginx/nginx.conf 
#添加如下内容
location /nginx-status { 
    stub_status on; 
    access_log /var/log/nginx/nginxstatus.log;    # 设置访问日志文件的位置
    auth_basic "nginx-status";           # 启用基本认证,并设置认证区域名称为 "nginx-status"
    auth_basic_user_file /etc/nginx/htpasswd;     # 指定包含用户名和密码的文件位置
}

3. 创建认证口令文件并添加用户zhangsan和ddoo123,密码用md5加密

下载htpasswd工具

#htpasswd是开源 http 服务器 apache httpd 的一个命令工具,用于生成 http 基本认证的密码文件
yum install -y httpd-tools 
创建新的密码文件并添加用户 zhangsan    -c 创建解密文件,-m MD5加密
htpasswd -c -m /etc/nginx/htpasswd zhangsan

或使用:
在已有的密码文件中添加用户 zhangsan
htpasswd -m /etc/nginx/htpasswd zhangsan

#上述是两种创建方式,根据实际情况灵活使用,当创建命令执行后,会让你输入要设置的密码

4. 重启服务

systemctl restart nginx

5. 客户端访问http://192.168.226.139/nginx-status即可  

 

 

Active connections
  解释: 当前与 Nginx 服务器建立的活动连接数,包括正在处理的连接和保持活动状态的空闲连接。
server accepts handled requests
  解释: 这是三组数字,分别表示服务器的总接收次数、总处理次数和总请求次数。
5 5 5
     接收次数 (accepts): 服务器接受的总连接数。
     处理次数 (handled): 服务器成功处理的总连接数。这通常等于接受的连接数,除非有一些连接在处理前被拒绝或失败。
     请求次数 (requests): 服务器处理的总请求数。这表示所有连接中发送的 HTTP 请求总数。
Reading
  解释: Nginx 正在读取客户端请求头的连接数。
Writing
  解释: Nginx 正在向客户端发送响应数据的连接数。
Waiting
  解释: 在 keep-alive 状态下等待客户端发起请求的空闲连接数。

 

三. 使用limit_rate限制客户端传输数据的速度

 

实验设备:Rocky_linux9.4 

实验IP    :  192.168.226.139

实验准备:关闭防火墙和selinux

limit_rate 参数用于限制单个连接的传输速率,这对于控制带宽、节省资源或确保所有用户都有平等的访问体验非常有用。 

 

 1. 在/etc/nginx/nginx.conf配置文件的server块中对应的location块加入 autoindex on;

如下: 

       location /ceshi {
           root   /usr/share/nginx/html;
           index  index.html;
           autoindex on;  # 启用 autoindex 功能  
        }

2.没有tar和zip工具先下载

yum install -y tar zip

然后在自定义的发布目录中创建一个文件

tar -zcvf /usr/share/nginx/html/ceshi/lzz.tar.gz /var

3.删除原来的index.html文件

rm -f /usr/share/nginx/html/ceshi/index.html

4.刷新浏览器重新打开http://192.168.226.139/ceshi/

 发现变成了显示的文件,也就是刚创建一个压缩文件

现在点击下载看,会发现很快就下载好了

 

 

5.现在编辑/etc/nginx/nginx.conf配置文件的server块中对应的location块加入limit_rate  2k;

如下:

       location /ceshi {
           root   /usr/share/nginx/html;
           index  index.html;
           autoindex on;  # 启用 autoindex 功能
           limit_rate  2k;  #对每个连接的限速为2k/s  
        }

重启nginx 

systemctl restart nginx

 

6. 然后刷新网页后再点下载

 

这时下载的速度就被限制为2048B左右,即2k左右。

 

四. nginx虚拟主机配置

 

实验前准备:

关闭防火墙和selinux 

下载nginx

yum install -y nginx

修改和创建默认打开文件index.html

echo "ceshi1" > /usr/share/nginx/html/index.html
echo "server2" > /opt/index.html

给ens33网卡增加一个IP

ip a a 192.168.226.141/24 dev ens33

 

实验设备:Rocky_linux9.4 

实验IP    : 

                     192.168.226.140

                     192.168.226.141 

 

 

 

1.基于端口的虚拟主机

 

编辑/etc/nginx/nginx.conf文件

新增一个server块并修改端口和默认打开目录

    server {
        listen       80;
        listen       [::]:80;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }


    server {
        listen       81;
        listen       [::]:81;
        server_name  _;
        root         /opt;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }

 具体可见图:

像这样编辑好保存退出,重启nginx

systemctl restart nginx

使用浏览器无痕模式访问:

        192.168.226.140:80

        192.168.226.140:81

 可见结果如图:

 

2. 基于IP的虚拟主机 

 

修改/etc/nginx/nginx.conf文件,修改为:

    server {
        listen       80;
        listen       [::]:80;
        server_name  192.168.226.140;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }


    server {
        listen       80;
        listen       [::]:80;
        server_name  192.168.226.141;
        root         /opt;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }

具体见下图修改:

 像这样编辑好保存退出,重启nginx

systemctl restart nginx

使用浏览器无痕模式访问:

        192.168.226.140

        192.168.226.141

 可见结果如图:

 

 

 

3. 基于域名的虚拟主机

修改/etc/nginx/nginx.conf文件,修改为:

 

    server {
        listen       80;
        listen       [::]:80;
        server_name  web.testpm.com;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }


    server {
        listen       80;
        listen       [::]:80;
        server_name  web.1000phone.com;
        root         /opt;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }

具体可见下图: 

 

 像这样编辑好保存退出,重启nginx

systemctl restart nginx

 

windows中配置本地域名解析

编辑C:\Windows\System32\drivers\etc\hosts文件,需要用记事本的管理员模式打开编辑

新增下述内容后保存退出: 

192.168.226.140 www.text.com longlong.org

使用浏览器无痕模式访问:

        web.testpm.com

        web.1000phone.com

可见结果如图:

 

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

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

相关文章

3阶段提交协议(3pc)

3阶段提交协议(3pc) 1 简介 三阶段提交协议是一个强一致、中心化的原子提交协议。解决了分布式事务、副本容错等分布式问题。其核心思想是将2PC的二阶段提交协议的“准备阶段”一分为二,形成了由CanCommit、PreCommit、DoCommit三个阶段组成…

LWIP移植

目录 前言一、以太网协议简介1.1 TCP/IP协议简介1.2 STM32的ETH外设1.2.1 MAC子层1.2.2 SMI站管理接口1.2.3 MII和RMII接口 1.3 外部PHY芯片LAN87201.3.1 LAN8720 中断管理1.3.2 PHY 地址设置1.3.3 nINT/REFCLKO 配置1.3.4 LAN8720 内部寄存器 1.4 LWIP 简介 二、带操作系统的移…

【热】大数据信用报告查询平台哪个比较好?这个平台值得一试!

在当今数字化时代,大数据技术的发展为个人和企业提供了更便捷、精准的信用报告查询服务。选择一个优秀的大数据信用报告查询平台至关重要,它直接影响到您获取信用信息的准确性和全面性。 首先,选择大数据信用报告查询平台时,您可以…

Flutter图像编辑器应用:创造生动美丽的照片体验

介绍 引言 想象一下,在一个阳光明媚的下午,与家人或朋友漫步在风景如画的街道上。拿出手机,迫不及待地捕捉这一刻的美好,按下快门,留下了一张充满回忆的照片。 然而,回到家后发现照片的亮度有些偏暗&…

大模型应用开发技术:Multi-Agent框架流程、源码及案例实战(二)

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (一) 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (二) 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (三) 基于 LlaMA…

c函数/2024/6/17

1.递归计算0--n的和 #include <stdio.h> int sum(int n);//递归求和函数 int main(int argc, const char *argv[]) {//(2)递归计算0--n的和int n0;printf("请输入n的值为:");scanf("%d",&n);printf("0--n的和为:%d",sum(n));return 0…

CTFshow之RCE代码命令远程执行第41关到第52关详细讲解。可私信!

与其抱怨自己&#xff0c;不如埋怨他人。 --莫迪大仙 引言&#xff1a;今天来到ctf赛题RCE专题第二天&#xff08;今天肯定写不完了啊啊啊啊啊&#xff09;&#xff0c;不过继续加油&#xff01; 一、实验准备 1、ctf网址 2、firefox浏览器、hackbar插件 二、实验过程 &a…

大数据分析-二手车用户数据可视化分析

项目背景 在当今的大数据时代&#xff0c;数据可视化扮演着至关重要的角色。随着信息的爆炸式增长&#xff0c;我们面临着前所未有的数据挑战。这些数据可能来自社交媒体、商业交易、科学研究、医疗记录等各个领域&#xff0c;它们庞大而复杂&#xff0c;难以通过传统的数据处…

Day 25:1807. 替换字符串中的括号内容

Leetcode 1807. 替换字符串中的括号内容 给你一个字符串 s &#xff0c;它包含一些括号对&#xff0c;每个括号中包含一个 非空 的键。 比方说&#xff0c;字符串 “(name)is(age)yearsold” 中&#xff0c;有 两个 括号对&#xff0c;分别包含键 “name” 和 “age” 。 你知道…

Linux:生产消费模型 读者写者模型

Linux&#xff1a;生产消费模型 & 读者写者模型 生产消费模型阻塞队列基本结构构造与析构投放任务获取任务总代码 POSIX 信号量基本概念接口 环形队列基本结构构造与析构投放任务获取任务总代码 读者写者模型读写锁 生产消费模型 生产消费模型是一种用于处理多线程之间任务…

编译器优化入门(基于ESP32)

主要参考资料&#xff1a; kimi: https://kimi.moonshot.cn/ ESP-IDF 支持多种编译器&#xff0c;但默认情况下&#xff0c;它使用的是乐鑫官方提供的 Xtensa 编译器&#xff0c;这是一个针对 ESP32 芯片架构&#xff08;Tensilica Xtensa LX6 微处理器&#xff09;优化的交叉编…

大学课设项目,Windows端基于UDP的网络聊天程序的服务端和客户端

文章目录 前言项目需求介绍一、服务端1.对Udp套接字进行一个封装2. UdpServer的编写3. Task.h4.protocol.h的编写5.线程池的编写6.main.cc 二、客户端1. Socket.h2.protocol.h3.UdpClient4.menu.h5.main.cpp 三、运行图 前言 本次项目可以作为之前内容的一个扩展&#xff0c;学…

windows 11 之 下载安装 curl

1. 背景 需要执行一个 curl 命令运行一个定时任务&#xff0c;之前博主用的mac&#xff0c;无需担心这个下载安装问题&#xff0c;现在转为 windows&#xff0c;需要下载安装crul命令。 2. 出现问题 3. 解决办法 3.1 下载最新的包 下载地址&#xff1a;https://curl.se/win…

文档项目:攻坚克难

鉴于交流离心机存在的缺点&#xff1a;转速相对偏差、稳定精度不够高&#xff1b;带负载能力受外界扰动后&#xff0c;波动较大&#xff1b;寿命短&#xff0c;研究所各相关部门成立组成技术攻关团队&#xff0c;齐心协力&#xff0c;攻坚克难&#xff0c;在摸索中突破创新&…

推荐 3 款小巧的文件压缩、投屏和快速启动软件,请收藏,避免找不到

Maya Maya是一款由博主25H开发的体积小巧、简单易用的快速启动工具。它的操作逻辑和界面设计几乎复刻了Rolan早期版本&#xff0c;功能上与Rolan几乎别无二致。Maya支持多文件拖拽添加启动、快捷键呼出、自动多列显示等功能。此外&#xff0c;Maya还具备lnk文件解析功能。 May…

“Jedis与Redis整合指南:实现高效的Java应用与Redis交互“

目录 #. 概念 1. 导入jedis依赖 2. 写一个类&#xff08;ping通redis&#xff09; 3. String字符串使用 3.1 set&#xff0c;get方法使用&#xff08;设值&#xff0c;取值&#xff09; 3.2 mset&#xff0c;mget方法使用&#xff08;设置多个值&#xff0c;取多个值&…

【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【10】【仓库管理】【分布式基础篇总结】

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【10】【仓库管理】【分布式基础篇总结】 采购简要流程采购单采购人员的接口分布式基础篇总结参考 采购简要流程 采购单 可以搞个枚举&#xff1a; public class WareConstant {public enu…

2024中国应急(消防)品牌巡展成都站成功召开!

汇聚品牌力量&#xff0c;共同相聚成都。6月14日&#xff0c;由中国安全产业协会指导&#xff0c;中国安全产业协会应急创新分会、应急救援产业网联合主办&#xff0c;四川省消防协会协办的“一切为了安全”2024年中国应急(消防)品牌巡展-成都站成功举办。该巡展旨在展示中国应…

特殊医学用途配方食品注册数据库

在这个追求健康的时代&#xff0c;特殊医学用途配方食品&#xff08;简称特医食品&#xff09;已成为众多特殊需求人群的膳食选择。它们不仅满足了特定疾病状态下的营养需求&#xff0c;更是病患康复之路上的重要伴侣。然而&#xff0c;面对市场上琳琅满目的特医食品&#xff0…

如何完成独立接口测试

有时我们需要完成独立的接口测试工作&#xff0c;在经过上面的接口测试工作准备后&#xff0c;下面我们可以这样开展独立的接口测试工作。先快速的学习接口设计&#xff0c;有一个整体的认识&#xff0c;再确定接口测试工作目标&#xff0c;再经过第一阶段确认接口的功能能够正…