IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 送你80%的面试胜率-Nginx深度优化 -> 正文阅读

[PHP知识库]送你80%的面试胜率-Nginx深度优化

请添加图片描述

Nginx安装

提示:有多种安装方式,本期讲yum安装

1.配置nginx官方yum源
在这里插入图片描述
添加内容:
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

保存退出

2.安装nginx
在这里插入图片描述
完成,如下提示:
在这里插入图片描述
3.查看nginx默认模块(显示版本及模块信息)
在这里插入图片描述


基本配置

提示:根据具体企业业务环境,来配置

1、使用域名搭建一台虚拟主机

mkdir /www
复制网页代码到/www目录下
将默认文件删除或者改名,编辑新配置文件:
在这里插入图片描述
添加内容:

server {
				listen       80;
				server_name  www.stub.com;
				location / {
					root   /www;
					index  index.html index.htm;
				}
	
			}

随便做个测试页:
在这里插入图片描述
重载服务:systemctl reload nginx

通过域名可以访问到网站
在这里插入图片描述
2、 nginx目录索引(autoindex自动索引模块)

nginx默认不起用目录索引,更不允许列出网站目录提供下载。
Syntax: autoindex on | off; 索引功能的开或关
Default: autoindex off; 默认关闭
Context: http, server, location 场景:全局、某个虚拟主机、某个虚拟主机的目录

1)在www网站下,创建download下载目录,索引显示

创建目录:
mkdir /www/download
复制文件到:
/www/download

编辑:vim /etc/nginx/conf.d/www.conf
在server字段中添加:
location /download {
root /www;
autoindex on; 启用索引显示
charset utf-8,gbk; 字符编码为中文
autoindex_exact_size on; 显示文件大小
autoindex_localtime on; 显示文件创建时间
}
保存退出
重载服务:systemctl reload nginx
给download目录上传测试文件:
在这里插入图片描述
客户端测试访问:http://www.stub.com/download/
在这里插入图片描述


优化

提示:这是重点内容

nginx状态监控(status模块)

1、 针对www网站,启用状态化追踪

vim /etc/nginx/conf.d/www.conf

在server字段中添加:
location /status {
    stub_status; 启用状态化追踪
    access_log off;	关闭status的日志记录
}
保存退出
重载服务:
systemctl reload nginx
验证:访问域名:http://www.stub.com/status

在这里插入图片描述

2、 nginx基于ip的访问控制(access模块)

1)仅允许内部网段或vpn访问status
vim /etc/nginx/conf.d/www.conf

修改为:
		 location /status {
			stub_status;
			access_log off;
			allow 192.168.1.0/24; 仅允许1.0网段访问
			deny all; 拒绝其他所有
		}

验证:更改测试机IP地址访问。

2)nginx基于用户的访问控制(auth模块)

设置访问/status,用户密码验证
注意:此处可能会报错
在这里插入图片描述
改成本地yum源安装,或者提示安装包与什么冲突,虚拟机恢复快照即可

安装成功如下图:
在这里插入图片描述
生成密钥配置文件:
在这里插入图片描述
编辑配置文件:
vim /etc/nginx/conf.d/www.conf
修改为:
location /status {
stub_status;
access_log off;
auth_basic “input your passwd:”; 用户验证启用描述
auth_basic_user_file /etc/nginx/.auth_conf; 用户验证文件路径
}
验证:
提示:输入用户名、密码
在这里插入图片描述
登录成功即可看到下图:
在这里插入图片描述


深度优化

提示:这是重中之重

1、 nginx的访问限制

1) limit_conn_module 连接频率限制(验证需要安装工具,用命令测试,暂略)

例子:
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;   创建zone区域名为addr,大小10m,保存客户端的二进制ip
	server {
		location /download/ {
				limit_conn addr 1;					一个ip同一时间点只允许建立一个连接
				}
		}
}

2)limit_req_module 请求频率限制

例子:
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;	创建zone区域名为one,大小10m,保存客户端的二进制ip,限制请求速率每秒1次
	server {
		location /download {
			limit_req zone=one burst=5;	调用请求速率区域,另外设置额外突发5次
			}
		}
}

2、nginx日志格式:log_format
普通日志格式是:
在这里插入图片描述
改成方便中国人习惯的:

例子:
编辑主配置文件:vim /etc/nginx/nginx.conf
	
	http {
		log_format  main  '$remote_addr - $remote_user [$time_iso8601] "$request" '		#定义日志输出格式main
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

		access_log  /var/log/nginx/access.log  main;									#调用日志格式main
	}
	#nginx日志格式的变量:
	$remote_addr			#记录客户端的ip地址
	$remote_user			#记录客户端的用户名
	$time_local			#通用的时间格式
	$time_iso8601			#iso8601时间格式
	$request			#请求的方法和请求的HTTP协议
	$status				#请求状态码
	$body_bytes_sent		#服务器回应的字节数,不包含头部大小
	$bytes_sent			#服务器回应的总字节数
	$msec				#日志写入时间,单位为秒,精度为毫秒
	$http_referer			#记录链接访问源地址
	$http_user_agent		#记录客户端浏览器信息
	$http_x_forwarded_for		#跨越代理服务器,记录客户机的原始ip
	$request_length			#请求包的长度(请求头+请求正文)
	$request_time			#请求花费的时间,单位为秒,精度为毫秒

重载服务:systemctl reload nginx
在这里插入图片描述

3、 nginx的location语法详解

语法规则: location [=|~|~*|^~] /uri/ {}
下列以优先级从高到低排序

= 开头表示精确匹配

^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。

~ 开头表示区分大小写的正则匹配                    

~* 开头表示不区分大小写的正则匹配             

!~和!~*分别为区分大小写不匹配及不区分大小写不匹配的正则

/ 通用匹配,任何请求都会匹配到。

进入配置文件目录:
cd /etc/nginx/conf.d/
创建配置文件(把www.conf改名或删除)
在这里插入图片描述

vim test.conf
添加:

	server {
    listen 80;
    server_name test.benet.com;
    location / {
            default_type text/html;
            return 200 "location /";
    }
    location =/ {
            default_type text/html;
            return 200 "location =/";
    }
    location ~ / {
            default_type text/html;
            return 200 "location ~ /";
    }
    location ~* / {
            default_type text/html;
            return 200 "location ~* /";
    }

}
保存退出
systemctl reload nginx.service

验证:
在这里插入图片描述

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-05 10:35:27  更:2021-09-05 10:35:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 19:58:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计