• 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  

    1. server {
    2. listen 80;
    3. listen [::]:80;
    4. server_name _;
    5. root /usr/share/nginx/html/ceshi;
    6. # Load configuration files for the default server block.
    7. include /etc/nginx/default.d/*.conf;
    8. error_page 404 /404.html;
    9. location = /404.html {
    10. }
    11. error_page 500 502 503 504 /50x.html;
    12. location = /50x.html {
    13. }
    14. }

    然后进行执行如下命令:

    1. mkdir /usr/share/nginx/html/ceshi
    2. echo "webserver" > /usr/share/nginx/html/ceshi/index.html
    3. echo "alias" > /usr/share/nginx/html/index.html
    4. systemctl restart nginx

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

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

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

    1. server {
    2. listen 80;
    3. listen [::]:80;
    4. server_name _;
    5. root /usr/share/nginx/html;
    6. # Load configuration files for the default server block.
    7. include /etc/nginx/default.d/*.conf;
    8. location /ceshi {
    9. alias /usr/share/nginx/html;
    10. index index.html;
    11. }
    12. error_page 404 /404.html;
    13. location = /404.html {
    14. }
    15. error_page 500 502 503 504 /50x.html;
    16. location = /50x.html {
    17. }
    18. }

    然后重启nginx

    systemctl restart nginx

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

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

    1. location /ceshi {
    2. root /usr/share/nginx/html;
    3. index index.html;
    4. }
    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 
    1. #添加如下内容
    2. location /nginx-status {
    3. stub_status on;
    4. access_log /var/log/nginx/nginxstatus.log; # 设置访问日志文件的位置
    5. auth_basic "nginx-status"; # 启用基本认证,并设置认证区域名称为 "nginx-status"
    6. auth_basic_user_file /etc/nginx/htpasswd; # 指定包含用户名和密码的文件位置
    7. }

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

    下载htpasswd工具

    1. #htpasswd是开源 http 服务器 apache httpd 的一个命令工具,用于生成 http 基本认证的密码文件
    2. yum install -y httpd-tools
    1. 创建新的密码文件并添加用户 zhangsan -c 创建解密文件,-m MD5加密
    2. htpasswd -c -m /etc/nginx/htpasswd zhangsan
    3. 或使用:
    4. 在已有的密码文件中添加用户 zhangsan
    5. htpasswd -m /etc/nginx/htpasswd zhangsan
    6. #上述是两种创建方式,根据实际情况灵活使用,当创建命令执行后,会让你输入要设置的密码

    4. 重启服务

    systemctl restart nginx

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

     

     

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

     

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

     

    实验设备:Rocky_linux9.4 

    实验IP    :  192.168.226.139

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

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

     

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

    如下: 

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

    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;

    如下:

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

    重启nginx 

    systemctl restart nginx

     

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

     

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

     

    四. nginx虚拟主机配置

     

    实验前准备:

    关闭防火墙和selinux 

    下载nginx

    yum install -y nginx

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

    1. echo "ceshi1" > /usr/share/nginx/html/index.html
    2. 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块并修改端口和默认打开目录

    1. server {
    2. listen 80;
    3. listen [::]:80;
    4. server_name _;
    5. root /usr/share/nginx/html;
    6. # Load configuration files for the default server block.
    7. include /etc/nginx/default.d/*.conf;
    8. error_page 404 /404.html;
    9. location = /404.html {
    10. }
    11. error_page 500 502 503 504 /50x.html;
    12. location = /50x.html {
    13. }
    14. }
    15. server {
    16. listen 81;
    17. listen [::]:81;
    18. server_name _;
    19. root /opt;
    20. # Load configuration files for the default server block.
    21. include /etc/nginx/default.d/*.conf;
    22. error_page 404 /404.html;
    23. location = /404.html {
    24. }
    25. error_page 500 502 503 504 /50x.html;
    26. location = /50x.html {
    27. }
    28. }

     具体可见图:

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

    systemctl restart nginx

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

            192.168.226.140:80

            192.168.226.140:81

     可见结果如图:

     

    2. 基于IP的虚拟主机 

     

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

    1. server {
    2. listen 80;
    3. listen [::]:80;
    4. server_name 192.168.226.140;
    5. root /usr/share/nginx/html;
    6. # Load configuration files for the default server block.
    7. include /etc/nginx/default.d/*.conf;
    8. error_page 404 /404.html;
    9. location = /404.html {
    10. }
    11. error_page 500 502 503 504 /50x.html;
    12. location = /50x.html {
    13. }
    14. }
    15. server {
    16. listen 80;
    17. listen [::]:80;
    18. server_name 192.168.226.141;
    19. root /opt;
    20. # Load configuration files for the default server block.
    21. include /etc/nginx/default.d/*.conf;
    22. error_page 404 /404.html;
    23. location = /404.html {
    24. }
    25. error_page 500 502 503 504 /50x.html;
    26. location = /50x.html {
    27. }
    28. }

    具体见下图修改:

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

    systemctl restart nginx

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

            192.168.226.140

            192.168.226.141

     可见结果如图:

     

     

     

    3. 基于域名的虚拟主机

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

     

    1. server {
    2. listen 80;
    3. listen [::]:80;
    4. server_name web.testpm.com;
    5. root /usr/share/nginx/html;
    6. # Load configuration files for the default server block.
    7. include /etc/nginx/default.d/*.conf;
    8. error_page 404 /404.html;
    9. location = /404.html {
    10. }
    11. error_page 500 502 503 504 /50x.html;
    12. location = /50x.html {
    13. }
    14. }
    15. server {
    16. listen 80;
    17. listen [::]:80;
    18. server_name web.1000phone.com;
    19. root /opt;
    20. # Load configuration files for the default server block.
    21. include /etc/nginx/default.d/*.conf;
    22. error_page 404 /404.html;
    23. location = /404.html {
    24. }
    25. error_page 500 502 503 504 /50x.html;
    26. location = /50x.html {
    27. }
    28. }

    具体可见下图: 

     

     像这样编辑好保存退出,重启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

    可见结果如图:

     

  • 相关阅读:
    MT3030 天梯赛
    数据结构详细笔记——栈与队列
    如何使用 saplink 安装其他网站上提供的 ABAP 程序
    记录一次对某网站的sql注入
    lvgl8.3.5版本 设置界面滚动条显示状态
    Git简明教程
    java-net-php-python-jspm家教信息管理系统演示录像(1)计算机毕业设计程序
    基于改进遗传算法的卡车和两架无人机旅行推销员问题(D2TSP)(Matlab代码实现)
    链表的常见数据结构及题目
    汉字风格迁移篇---W-net:基于深度神经网络的一次任意风格汉字生成
  • 原文地址:https://blog.csdn.net/Lzcsfg/article/details/139749159