Nginx 高级应用

目录

一.使用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

可见结果如图:

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中电金信:银行业数据中心何去何从

20多年前,计算机走进国内大众视野,计算机行业迎来在国内的高速发展时代。银行业是最早使用计算机的行业之一,也是计算机技术应用最广泛、最深入的行业之一。近年来,随着银行竞争加剧,科技如何引领业务、金融科技如何发…

面向对象和面向过程

Python完全采用了面向对象的思想,是真正面向对象的编程语言,完全支持面向对象的基本功能,例如:继承、多态、封装等。 Python支持面向过程、面向对象、函数式编程等多种编程方式。而Java编程语言支持面向对象的编程方式&#xff0…

元数据:数据的罗塞塔石碑

在大数据时代,我们每天都在生成和处理海量数据。但数据本身,如果没有适当的上下文和描述,就像是一堆没有翻译的古老文字。这就是元数据发挥作用的地方——它是大数据世界的罗塞塔石碑,为我们提供了理解和利用数据的关键。 文章目录…

从中概回购潮,看互联网的未来

王兴的饭否语录里有这样一句话:“对未来越有信心,对现在越有耐心。” 而如今的美团,已经不再掩饰对未来的坚定信心。6月11日,美团在港交所公告,计划回购不超过20亿美元的B类普通股股份。 而自从港股一季度财报季结束…

GStreamer——教程——基础教程3:Dynamic pipelines

基础教程3:Dynamic pipelines( 动态管道 ) 目标 本教程显示了使用GStreamer所需的其他基本概念,它允许“动态”构建pipeline(管道),信息变得可用,而不是在应用程序开始时定义一条单一的管道。 完成本教程后,您将具备…

Pyshark——安装、解析pcap文件

1、简介 PyShark是一个用于网络数据包捕获和分析的Python库,基于著名的网络协议分析工具Wireshark和其背后的libpcap/tshark库。它提供了一种便捷的方式来处理网络流量,适用于需要进行网络监控、调试和研究的场景。以下是PyShark的一些关键特性和使用方…

26 岁的“天才少年”,带队面壁打通高效大模型之路

每一轮技术浪潮出现时,冲在最前面的都是朝气蓬勃的年轻人。 当大模型代表的人工智能浪潮席卷全球,作为移动互联网“原住民”的年轻开发者,可以说是最活跃的群体。他们的脸庞还有些稚嫩,但在技术和方向上有着自己的想法&#xff0…

志愿服务管理系统的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,基础数据管理,广场论坛管理,志愿活动管理,活动报名管理 前台账户功能包括:系统首页,个人中心,志愿活动&a…

dp练习2

如何分析这个题目呢&#xff0c;要想着当前的最优解只和前面的最优解有关 class Solution { public:int numSquares(int n) {vector<int> f(n 1);for (int i 1; i < n; i) {int minn INT_MAX;for (int j 1; j * j < i; j) {minn min(minn, f[i - j * j]);}f[…

【Linux】进程_7

文章目录 五、进程8. 进程地址空间9. 进程终止10. 进程等待 未完待续 五、进程 8. 进程地址空间 我们上节知道了进程地址空间是根据页表来使虚拟地址转换成内存中的物理地址&#xff0c;那这种 地址空间 页表 的机制有什么好处呢&#xff1f;①这种机制可以将物理内存从无序…

探索 Perplexity:产品经理的新式 AI 工具

这是一篇国外博客的翻译文章&#xff0c;文中重点介绍了产品经理如何使用 AI 工具 Perplexity 来解决日常工作中的实际问题。通过深入调查和数百次电话访谈&#xff0c;收集了产品经理使用Perplexity 的具体方法&#xff0c;并列举了一些非常实用的例子。 这些方法包括理解和制…

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

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

【排序算法】希尔排序详解(C语言)

文章目录 前言希尔排序的原理原理思路 代码实现希尔排序的相关问题效率算法稳定性 前言 为什么会有希尔排序&#xff0c;要从插入排序说起&#xff0c;希尔排序一开始设计出来是为了改进插入排序&#xff0c;因为插入排序在处理大量数据时效率不高&#xff0c;特别是对于近乎有…

【数据库编程-SQLite3(三)】Ubuntu下sqlite3的使用

学习分享 1、安装sqlite3命令2、sqlite3点命令3、在Linux命令行下&#xff0c;启动sqlite33.1、编写sql脚本3.2、脚本编写--DDL3.3、进入xxx.db数据库&#xff0c;读取脚本。3.4、再次查看数据库中的表。证明表创建成功。3.5、查看数据表中用户内容3.6、查看表结构3.7、在数据库…

JAVAEE值之网络原理(1)_用户数据报协议(UDP)、概念、特点、结构、代码实例

前言 在前两节中我们介绍了UDP数据报套接字编程&#xff0c;但是并没有对UDP进行详细介绍&#xff0c;本节中我们将会详细介绍传输层中的UDP协议。 一、什么是UDP&#xff1f; UDP工作在传输层&#xff0c;用于程序之间传输数据的。数据一般包含&#xff1a;文件类型&#xff0…

【图像分割】DSNet: A Novel Way to Use Atrous Convolutions in Semantic Segmentation

DSNet: A Novel Way to Use Atrous Convolutions in Semantic Segmentation 论文链接&#xff1a;http://arxiv.org/abs/2406.03702 代码链接&#xff1a;https://github.com/takaniwa/DSNet 一、摘要 重新审视了现代卷积神经网络&#xff08;CNNs&#xff09;中的atrous卷积…

WPF 深入理解一、基础知识介绍

基础知识 本系列文章是对个人 B站 up 微软系列技术教程 记录 视频地址 https://www.bilibili.com/video/BV1HC4y1b76v/?spm_id_from333.999.0.0&vd_source0748f94a553c71a2b0125078697617e3 winform 与 wpf 异同 1.winform 项目结构 编辑主要是在 Form1.cs(页面)&#…

【QT5】<重点> QT串口编程

目录 前言 一、串口编程步骤 0. 添加串口模块 1. 自动搜索已连接的串口 2. 创建串口对象 3. 初始化串口 4. 打开串口 5. 关闭串口 6. 发送数据 7. 接收数据 二、简易串口助手 1. 实现效果 2. 程序源码 3. 实现效果二 前言 本篇记录QT串口编程相关内容&#xff0…

早期发现,健康生活!第三届ZAODX世界肿瘤早筛大会圆满落幕!

2024年6月15日-16日&#xff0c;第三届ZAODX世界肿瘤早筛大会在雄安新区盛大开幕&#xff01;本次会议由河北雄安新区管理委员会公共服务局指导&#xff0c;第三届ZAODX世界肿瘤早筛大会组委会和早筛网主办&#xff0c;粤港澳大湾区精准医学研究院&#xff08;广州&#xff09;…

Paragon NTFS for Mac 15软件下载及安装教程

简介&#xff1a; NTFS For Mac 15是首个支持Mac上读写NTFS外置存储设备解决方案 &#xff0c;解决mac不能读写外置让您更加简单直观的在Mac机上随意对NTFS文件修改、删除等操作。 安 装 包 获 取 地 址&#xff1a; Paragon Ntfs For Mac 15版&#xff1a; ​​https://sou…