Nginx网络服务三-----(三方模块和内置变量)

news2024/11/15 21:42:55

1.验证模块 需要输入用户名和密码

我们要用htpasswd这个命令,先安装一下httpd

生成文件和用户 

修改文件 

访问页面 

 为什么找不到页面?

对应的路径下,没有这个文件

去创建文件

去虚拟机浏览器查看

有的页面不想被别人看到,可以做这个操作

2.网页的状态页

基于nginx 模块 ngx_http_stub_status_module 实现,在编译安装nginx的时候需要添加编译参数 --with-http_stub_status_module,否则配置完成之后监测会是提示语法错误注意: 状态页显示的是整个服务器的状态,而非虚拟主机的状态

文件中加入内容 

浏览器看结果

#状态页用于输出nginx的基本状态信息

Active connections: 
#当前处于活动状态的客户端连接数,包括连接等待空闲连接数=reading+writing+waiting
 

accepts:
#统计总值,Nginx自启动后已经接受的客户端请求的总数。

handled:
#统计总值,Nginx自启动后已经处理完成的客户端请求总数,通常等于accepts,除非有因worker_connections限制等被拒绝的连接

requests:
#统计总值,Nginx自启动后客户端发来的总的请求数。


Reading:
#当前状态,正在读取客户端请求报文首部的连接的连接数,数值越大,说明排队现象严重,性能不足


Writing:

#当前状态,正在向客户端发送响应报文过程中的连接数,数值越大,说明访问量很大

Waiting:
#当前状态,正在等待客户端发出请求的空闲连接数,开启 keep-alive的情况下,这个值等于active – (reading+writing)

提取内容

这样别人也可以看到,这个给它加个身份验证

加了身份验证,看不懂怎么办

如果你想更安全

3.自定义 错误页面

自定义一个页面

更换状态码

为什么要更换状态码?

因为404状态码出现时,可能会被劫持,为了不被劫持,我们可以更换状态码

4.检测文件是否存在

当访问的页面存在时,那就去访问这个页面,不会显示about 

5.日志位置存放

#格式
Syntax: error_log file [level];
error_log    /apps/nginx/logs/kgc_error.log;
固定格式      文件路径                         级别(info  debug等  可以忽略不写)
      


Default: 
error_log logs/error.log error;
Context: main, http, mail, stream, server, location
level: debug, info, notice, warn, error, crit, alert, emerg

[root@centos7 ~]# mkdir /data/nginx/logs
 listen 80;
 server_name www.kgc.org;
 error_page  500 502 503 504 404 /error.html; 
 access_log /apps/nginx/logs/kgc_access.log; 
 error_log /apps/nginx/logs/kgc_error.log; 
 #定义错误日志文件


#重启nginx并访问不存在的页面进行测试并验证是在指定目录生成新的日志文件


[root@localhost ~]#mkdir /apps/nginx/logs
[root@localhost ~]#nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost ~]#nginx -s reload

错误日志实验 

将两个网站的 日志分离

[root@localhost error]#vim /apps/nginx/conf.d/m.conf
server{
        listen 80;
        server_name  www.m.com;
        root /data/nginx/m/;
        error_log    /data/logs/m_error.log;
        access_log  /data/logs/m_access.log;
}


[root@localhost error]#vim /apps/nginx/conf.d/pc.conf
server{
        listen 80;
        server_name  www.pc.com;
        root /data/nginx/pc;
        error_log    /data/logs/pc_error.log;
        access_log  /data/logs/pc_access.log;
}
[root@localhost error]#mkdir /data/logs
[root@localhost error]#nginx -t
nginx: the configuration file /apps/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /apps/nginx/conf/nginx.conf test is successful
[root@localhost error]#nginx -s reload

查看日志是否生效

6.长连接

keepalive_timeout timeout [header_timeout];  
#设定保持连接超时时长,0表示禁止长连接,默认为75s,通常配置在http字段作为站点全局配置


keepalive_requests number;  
#在一次长连接上所允许请求的资源的最大数量,默认为100次,建议适当调大,比如:500
可以加在全局或者 server 

keepalive_requests 3;
#最大下载三个资源就会断开


keepalive_timeout 60 65;   #只能有一个空格 
#开启长连接后,返回客户端的会话保持时间为60s,单次长连接累计请求达到指定次数请求或65秒就会被断开,后面的60为发送给客户端应答报文头部中显示的超时时间设置为60s:如不设置客户端将不显示超时时间。


Keep-Alive:timeout=60  #浏览器收到的服务器返回的报文
#如果设置为0表示关闭会话保持功能,将如下显示:


Connection:close  #浏览器收到的服务器返回的报文
#使用命令测试:


[root@centos8 ~]# telnet www.kgc.org 80
Trying 10.0.0.8...
Connected to www.kgc.org.
Escape character is '^]'.
GET / HTTP/1.1
HOST: www.kgc.org

#Response Headers(响应头信息):
HTTP/1.1 200 OK
Server: nginx/1.18.0
Date: Thu, 24 Sep 2020 04:35:35 GMT
Content-Type: text/html
Content-Length: 7
Last-Modified: Wed, 23 Sep 2020 14:39:21 GMT
Connection: keep-alive
Keep-Alive: timeout=60
ETag: "5c8a6b3a-7"
Accept-Ranges: bytes


#页面内容
pc web

7.作为下载服务器配置

ngx_http_autoindex_module 模块处理以斜杠字符 "/" 结尾的请求,并生成目录列表,可以做为下载服务

配置使用

官方文档:

Module ngx_http_autoindex_module

给文件内容加单位大小

autoindex on | off;
#自动文件索引功能,默为off


autoindex_exact_size on | off;  
#计算文件确切大小(单位bytes),off 显示大概大小(单位K、M),默认on


autoindex_localtime on | off ; 
#显示本机时间而非GMT(格林威治)时间,默认off


autoindex_format html | xml | json | jsonp; 
#显示索引的页面文件风格,默认html


limit_rate rate; 
#限制响应客户端传输速率(除GET和HEAD以外的所有方法),单位B/s,即bytes/second,默认值0,表示无限制,此指令由ngx_http_core_module提供


set $limit_rate
#变量提供 限制   变量优先级高

改为json格式

8.用户上传资料

上传需要借助开发小的程序, 并且程序 5M 和 nginx 10M 都会限制。 两者取最小

client_max_body_size 1m; 
#设置允许客户端上传单个文件的最大值,默认值为1m,上传文件超过此值会出413错误


client_body_buffer_size size; 
#用于接收每个客户端请求报文的body部分的缓冲区大小;默认16k;超出此大小时,其将被暂存到磁盘上的由下面client_body_temp_path指令所定义的位置


client_body_temp_path path [level1 [level2 [level3]]];
#设定存储客户端请求报文的body部分的临时存储路径及子目录结构和数量,目录名为16进制的数字,使用hash之后的值从后往前截取1位、2位、2位作为目录名

上传文件大于限制  错误代码413

9.其他设置

directio size | off;
#操作完全和aio相反,aio是读取文件而directio是写文件到磁盘,启用直接I/O,默认为关闭,当文件大于等于给定大小时,例如:directio 4m;同步(直接)写磁盘,而非写缓存。

直接 写入 磁盘     还是等待一定数据量写入磁盘

open_file_cache off;  #是否缓存打开过的文件信息
open_file_cache max=N [inactive=time];
#nginx可以缓存以下三种信息:
(1) 文件元数据:文件的描述符、文件大小和最近一次的修改时间
(2) 打开的目录结构
(3) 没有找到的或者没有权限访问的文件的相关信息 
max=N:#可缓存的缓存项上限数量;达到上限后会使用LRU(Least recently used,最近最少使用)算法实现管理
inactive=time:#缓存项的非活动时长,在此处指定的时长内未被命中的或命中的次数少于

open_file_cache_min_uses    
#指令所指定的次数的缓存项即为非活动项,将被删除 
open_file_cache_valid time; 
#缓存项有效性的检查验证频率,默认值为60s 
open_file_cache_errors on | off; 
#是否缓存查找时发生错误的文件一类的信息,默认值为off
open_file_cache_min_uses number; 
#open_file_cache指令的inactive参数指定的时长内,至少被命中此处指定的次数方可被归类为活动项,默认值为1

范例:
open_file_cache max=10000 inactive=60s; 
#最大缓存10000个文件,非活动数据超时时长60s
open_file_cache_valid   60s;  
#每间隔60s检查一下缓存数据有效性
open_file_cache_min_uses 5; 
#60秒内至少被命中访问5次才被标记为活动数据
open_file_cache_errors   on;
#缓存错误信息

limit_except method ... { ... },仅用于location
#限制客户端使用除了指定的请求方法之外的其它方法 
method:GET, HEAD, POST, PUT, DELETE,MKCOL, COPY, MOVE, OPTIONS, PROPFIND, 
PROPPATCH, LOCK, UNLOCK, PATCH
limit_except GET {
 allow 192.168.91.101;
 deny all;
}

#除了GET和HEAD 之外其它方法仅允许192.168.1.0/24网段主机使用

10.第三方模块(echo模块)

开源的echo模块 https://github.com/openresty/echo-nginx-module

安装第三方命令 

看一下,make install会不会覆盖之前的 

curl访问

11.变量

变量分为:内置变量和 自定义变量

http://nginx.org/en/docs/varindex.html
官方文档

11.1内置变量

$remote_addr; 

#存放了客户端的地址,注意是客户端的公网IP


$proxy_add_x_forwarded_for;(传地址) 

$proxy_add_x_forwarded_for
#此变量表示将客户端IP追加请求报文中X-Forwarded-For首部字段,多个IP之间用逗号分隔,如果请求中没有X-Forwarded-For,就使用$remote_addrthe “X-Forwarded-For” client request header field with the $remote_addr variable appended to it, separated by a comma. If the “X-Forwarded-For” field is not present in the client request header, the $proxy_add_x_forwarded_for variable is equal to the $remote_addr variable.
客户机    代理1     代理2     nginx服务器
$proxy_add_x_forwarded_for: 在代理1 上存的是  客户机的ip
$proxy_add_x_forwarded_for: 在代理2 上存的是  客户机的ip,代理1的ip            用逗号隔开
$proxy_add_x_forwarded_for: nginx  上存的是  客户机的ip,代理1的ip,代理2的ip

$args;(存放URL的参数)

$args; 
#变量中存放了URL中的参数,例如:http://www.kgc.org/main/index.do?id=20190221&partner=search
#返回结果为: id=20190221&partner=search    存放的就是这个

select   *  from table  where id=20190221

$document_root;

指明了主站点目录的位置


#保存了针对当前资源的请求的系统根目录,例如:/apps/nginx/html 

$document_uri;

不包含参数的URL


#保存了当前请求中不包含参数的URI,注意是不包含请求的指令

比如:http://www.kgc.org/main/index.do?id=20190221&partner=search会被定义为/main/index.do 
#返回结果为:/main/index.do

$host;

服务器的主机地址(名字)

$limit_rate;

限速(网路速率)

#如果nginx服务器使用limit_rate配置了显示网络速率,则会显示,如果没有设置, 则显示0

$remote_port;

客户端的请求端口

#客户端请求Nginx服务器时随机打开的端口,这是每个客户端自己的端口

$remote_user;

经过 htpasswd验证的用户名

#已经经过Auth Basic Module验证的用户名

$request_method; 

请求资源的方式,GET/PUT/DELETE等

$request_filename; 

表示系统的真实路径

#当前请求的资源文件的磁盘路径,由root或alias指令与URI请求生成的文件绝对路径,如:/apps/nginx/html/main/index.html

$request_uri; 

包含请求参数的原始URI,不包含主机名

相当于:$document_uri?$args

$scheme;

请求的协议

例如:http,https,ftp等

$server_protocol; 

你使用的协议的版本

#保存了客户端请求资源使用的协议的版本,例如:HTTP/1.0,HTTP/1.1,HTTP/2.0等

$server_addr; 

服务器的IP地址

$server_name; 

请求的服务器的主机名

 $server_port; 

请求的服务器的端口号

例如:https(端口号443)      http(端口号80)

$http_user_agent;

客户端浏览器的详细信息

$http_cookie; 

客户端的缓存信息

缓存:cookie和session

 例子:

11.2自定义变量

11.2.1 set指令

假如需要自定义变量名称和值,使用指令set $variable value;

语法格式:

Syntax: set $variable value;
Default: —
Context: server, location, if

set这个指令

只能放在 server,location,if 下面 

12.自定义图标

favicon.ico 文件是浏览器收藏网址时显示的图标,当客户端使用浏览器问页面时,浏览器会自己主动发起请求获取页面的favicon.ico文件,但是当浏览器请求的favicon.ico文件不存在时,服务器会记录404日志,而且浏览器也会显示404报错

【定制小图标】
wget www.baidu.com/favicon.ico


放到主目录就可以了

不生效可以重新打开浏览器

12.1 百度图标 

复制一份到主目录下

浏览器访问地址,看图标

12.2 京东图标

 

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

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

相关文章

MongoDB的介绍和使用

目录 一、MongoDB介绍 二、MongoDB相关概念 三、MongoDB的下载和安装 四、SpringBoot 整合 MongoDB 一、MongoDB介绍 MongoDB是一种NoSQL数据库管理系统,采用面向文档的数据库模型。它以C语言编写,旨在满足大规模数据存储和高性能读写操作的需求。Mo…

BUGKU-WEB 文件包含

题目描述 题目截图如下: 进入场景看看: 解题思路 你说啥我就干啥:点击一下试试你会想到PHP伪协议这方面去嘛,你有这方面的知识储备吗? 相关工具 解题步骤 查看源码 看到了一点提示信息: ./index.…

【压缩感知基础】Nyquist采样定理

Nyquist定理,也被称作Nyquist采样定理,是由哈里奈奎斯特在1928年提出的,它是信号处理领域的一个重要基础定理。它描述了连续信号被离散化为数字信号时,采样的要求以避免失真。 数学表示 Nyquist定理的核心内容可以描述如下&…

06 内存管理

目录 c/c内存分布c语言中动态内存管理方式c中动态内存管理方式operator new与operator delete函数new和delete的实现原理定位new表达式(placement-new)常见题 1. c/c内存分布 看一段代码 int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticV…

sql server想要小数点后向下取整怎么搞

select FORMAT(3.169, N2) as 四舍五入1, CAST(3.169 AS decimal(9,2)) as 四舍五入2, ROUND(3.169, 2) as 四舍五入3, CAST(FLOOR(3.169 * 100) / 100 AS decimal(9,2)) as 向下取整1, FLOOR(3.169 * 100) / 100 as 向下取整2, ceiling(3.169 * 100) / 100 as 向上取整—…

Studio One 6免费下载安装激活教程

一、Studio One 6安装 1.双击Studio One6安装包(见文章尾部),如下图,可以切换语言,点击【OK】。 2.根据安装导航,点击【下一步】 3.阅读许可证协议后,点击【我接受】。 4.选择安装位置&#xf…

服务器开发

服务器开发涉及多个领域和技术,包括但不限于以下方面: 网络编程:服务器开发需要深入理解网络协议,如TCP/IP,UDP等,以及套接字编程。同时,对于常用的网络通信模型,如socket网络编程&…

Http改为Https后该如何测试

需要了解Http和Http之间的关系,他们之间都有哪些优点,哪些缺点,如果使用的产品进行了更改,该如何进行测试等等,Https提供了一个安全层(SSL/TLS),这个安全层在客户端和服务器之间提供…

Nginx-----------高性能的 Web服务端 nginx编译安装 、平滑升级(一)

一、Nginx高性能的 Web服务端 Nginx是由1994年毕业于俄罗斯国立莫斯科鲍曼科技大学的同学为俄罗斯rambler.ru公司开发的,开发工作最早从2002年开始,第一次公开发布时间是2004年10月4日,版本号是0.1.02019年3月11日F5与NGINX达成协议,F5 将收购…

BLUEZ学习笔记_GATT_server_client_简单解析

文章参考了以下内容 蓝牙bluez5的开发方法及入门教程_bluez蓝牙配网demo-CSDN博客文章浏览阅读1w次,点赞15次,收藏99次。1 摘要这篇文章的主要目的是告诉大家应该如何使用bluez进行开发,由于bluez的文档实在太少了,入门门槛实在太…

【鸿蒙 HarmonyOS 4.0】TypeScript开发语言

一、背景 HarmonyOS 应用的主要开发语言是 ArkTS,它由 TypeScript(简称TS)扩展而来,在继承TypeScript语法的基础上进行了一系列优化,使开发者能够以更简洁、更自然的方式开发应用。值得注意的是,TypeScrip…

如何在群辉7.2中使用Docker搭建容器魔方服务并远程访问【内网穿透】

文章目录 1. 拉取容器魔方镜像2. 运行容器魔方3. 本地访问容器魔方4. 群辉安装Cpolar5. 配置容器魔方远程地址6. 远程访问测试7. 固定公网地址 本文主要介绍如何在群辉7.2版本中使用Docker安装容器魔方,并结合Cpolar内网穿透工具实现远程访问本地网心云容器魔方界面…

4核8G服务器能承受多少并发?

腾讯云4核8G服务器能承受多少并发?阿腾云的4核8G服务器可以支持20个访客同时访问,关于4核8G服务器承载量并发数qps计算测评,云服务器上运行程序效率不同支持人数在线人数不同,公网带宽也是影响4核8G服务器并发数的一大因素&#x…

useRef有什么用?

看一下官网定义 useRef是一个React Hook,它能帮助引用一个不需要渲染的值 这句话透露出一个信息,不需要渲染的值可以用useRef引用,那需要渲染的值用什么引用呢?当然是useState了,需要渲染的值指的就是状态嘛&#xff0…

基于springboot+vue的电影评论网站(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

一款高输出电流 PWM 转换器

一、产品描述 TPS543x 是一款高输出电流 PWM 转换器,集成了低电阻、高侧 N 沟道 MOSFET。具有所列的特性的基板上还包括高性能电压误差放大器(可在瞬态条件下提供高稳压精度)、欠压锁定电路(用于防止在输入电压达到 5.5V 前启动&…

Spring Event 快速入门

请直接看原文 : Spring Event,贼好用的业务解耦神器! (qq.com) -------------------------------------------------------------------------------------------------------------------------------- 前言 Spring Event 同步使用 Spring Event 异…

mac真的安装不了vmware吗 mac如何安装crossover crossover序列号从哪里买 购买正版渠道

有些用户可能想在mac上运行一些只能在windows上运行的软件,比如游戏、专业软件等。这时候,就需要用到虚拟机技术,也就是在mac上安装一个可以模拟其他操作系统的软件,比如vmware或者crossover。那么,mac真的安装不了vmw…

【鸿蒙 HarmonyOS 4.0】数据持久化

一、数据持久化介绍 数据持久化是将内存数据(内存是临时的存储空间),通过文件或数据库的形式保存在设备中。 HarmonyOS提供两种数据持久化方案: 1.1、用户首选项(Preferences): 通常用于保存应用的配置信息。数据通…

《VitePress 简易速速上手小册》第8章 安全性与部署(2024 最新版)

文章目录 8.1 安全最佳实践8.1.1 基础知识点解析8.1.2 重点案例:个人博客8.1.3 拓展案例 1:在线商店8.1.4 拓展案例 2:企业网站 8.2 部署到 GitHub Pages 和其他平台8.2.1 基础知识点解析8.2.2 重点案例:个人博客部署到 GitHub Pa…