0
点赞
收藏
分享

微信扫一扫

送你80%的面试胜率-Nginx深度优化


送你80%的面试胜率-Nginx深度优化_centos

Nginx安装

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

1.配置nginx官方yum源

送你80%的面试胜率-Nginx深度优化_运维_02


添加内容:

[nginx-stable]

name=nginx stable repo

baseurl=http://nginx.org/packages/centos/7/$basearch/

gpgcheck=0

enabled=1

保存退出

2.安装nginx

送你80%的面试胜率-Nginx深度优化_nginx_03


报错处理:与已安装的依赖包冲突

送你80%的面试胜率-Nginx深度优化_centos_04


解决方案:恢复快照,如果卸载冲突包,它还是会提示其他报错,安装不了完成,如下提示:

送你80%的面试胜率-Nginx深度优化_linux_05


3.查看nginx默认模块(显示版本及模块信息)

送你80%的面试胜率-Nginx深度优化_运维_06

基本配置

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

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

mkdir /www

复制网页代码到/www目录下

将默认文件删除或者改名,编辑新配置文件:

送你80%的面试胜率-Nginx深度优化_nginx_07


添加内容:

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

}

随便做个测试页:

送你80%的面试胜率-Nginx深度优化_centos_08


重载服务:systemctl reload nginx通过域名可以访问到网站

送你80%的面试胜率-Nginx深度优化_linux_09


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; 显示文件创建时间

}

保存退出

如下图:注意:格式尽量标准化,否则,可能报错,或者容易输错。

送你80%的面试胜率-Nginx深度优化_linux_10

重载服务:systemctl reload nginx

给download目录上传测试文件:

送你80%的面试胜率-Nginx深度优化_运维_11


客户端测试访问:http://www.stub.com/download/

送你80%的面试胜率-Nginx深度优化_运维_12

优化

提示:这是重点内容

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

送你80%的面试胜率-Nginx深度优化_nginx_13

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,用户密码验证

注意:此处可能会报错

送你80%的面试胜率-Nginx深度优化_centos_14


改成本地yum源安装,或者提示安装包与什么冲突,虚拟机恢复快照即可安装成功如下图:

送你80%的面试胜率-Nginx深度优化_web service_15


生成密钥配置文件:

送你80%的面试胜率-Nginx深度优化_linux_16


编辑配置文件:

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; 用户验证文件路径

}

验证:

提示:输入用户名、密码

送你80%的面试胜率-Nginx深度优化_nginx_17


登录成功即可看到下图:

送你80%的面试胜率-Nginx深度优化_linux_18

深度优化

提示:这是重中之重

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

普通日志格式是:

送你80%的面试胜率-Nginx深度优化_linux_19


改成方便中国人习惯的:

例子:
编辑主配置文件: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

送你80%的面试胜率-Nginx深度优化_web service_20

3、 nginx的location语法详解

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

= 开头表示精确匹配

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

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

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

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

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

进入配置文件目录:

cd /etc/nginx/conf.d/

创建配置文件(把www.conf改名或删除)

送你80%的面试胜率-Nginx深度优化_nginx_21

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

验证:

送你80%的面试胜率-Nginx深度优化_运维_22


举报

相关推荐

0 条评论