Nginx 实验(三)
·
实验 7:服务访问的用户认证
实验目的:配置 Nginx 实现 HTTP 基本认证,保护特定目录。
1. 创建密码文件
# 创建密码文件 .htpasswd,用户名为 admin,密码为 lee
# -c: 创建新文件 (create)
# -m: 使用 MD5 加密密码 (md5)
# -b: 批处理模式,密码直接在命令行提供 (batch)
[root@Nginx ~]# htpasswd -cmb /usr/local/nginx/conf/.htpasswd admin lee
Adding password for user admin
2. 配置 Nginx
server {
listen 80;
server_name lee.timinglee.org;
location /admin {
root /usr/local/nginx/html;
# 开启认证,括号内为浏览器弹窗显示的提示信息
auth_basic "login passwd ";
# 指定密码文件路径
auth_basic_user_file "/usr/local/nginx/conf/.htpasswd";
}
}
3. 重启服务并测试
# 重启 Nginx 服务使配置生效
[root@Nginx ~]# systemctl restart nginx.service
# 测试 1:直接访问,应返回 401 未授权
[root@Nginx ~]# curl lee.timinglee.org/admin/
# 返回内容包含 <title>401 Authorization Required</title>
# 测试 2:带用户名密码访问,应成功
# -u: 指定用户名和密码 (user)
[root@Nginx ~]# curl -u admin:lee http://lee.timinglee.org/admin/
# 返回内容:admin

实验 8:自定义错误页面
实验目的:当访问出现特定错误(如 404, 502)时,显示自定义内容。
1. 准备错误页面内容
# 创建错误页面目录
[root@Nginx ~]# mkdir /usr/local/nginx/errorpage
# 创建错误提示文件,写入自定义内容
[root@Nginx ~]# echo "太不巧了,你要访问的页面辞职了!!" > /usr/local/nginx/errorpage/errormessage
# 验证文件内容
[root@Nginx ~]# cat /usr/local/nginx/errorpage/errormessage
太不巧了,你要访问的页面辞职了!!
2. 配置 Nginx
server {
listen 80;
server_name lee.timinglee.org;
# 定义错误代码对应的内部跳转 URI
# 当出现 404, 405, 503, 502 时,内部跳转到 /error
error_page 404 405 503 502 /error;
location /lee {
root /usr/local/nginx/html;
}
# 处理 /error 请求
location /error {
# 别名映射,将 /error 请求直接映射到具体文件路径
alias /usr/local/nginx/errorpage/errormessage;
}
}
3. 测试验证
# 访问不存在的路径触发错误页面
[root@Nginx ~]# curl lee.timinglee.org/lee/
# 返回内容:太不巧了,你要访问的页面辞职了!!
实验 9:自定义错误日志
实验目的:为特定虚拟主机配置独立的错误日志文件,便于排查问题。
1. 创建日志目录
# 创建多级目录用于存放特定域名的日志
[root@Nginx ~]# mkdir -p /usr/local/nginx/logs/timinglee.org/
2. 配置 Nginx
server {
listen 80;
server_name lee.timinglee.org;
error_page 404 405 503 502 /error;
# 指定错误日志的路径、文件名及日志级别 (error)
error_log logs/timinglee.org/lee.error error;
location /lee {
root /usr/local/nginx/html;
}
location /error {
alias /usr/local/nginx/errorpage/errormessage;
}
}
3. 重启服务并验证日志
# 重启服务
[root@Nginx ~]# systemctl restart nginx.service
# 进入日志目录
[root@Nginx ~]# cd /usr/local/nginx/logs/timinglee.org/
[root@Nginx timinglee.org]# ls
lee.error
# 触发错误前查看日志(应为空)
[root@Nginx timinglee.org]# cat lee.error
# 触发错误请求
[root@Nginx timinglee.org]# curl lee.timinglee.org/lee/
太不巧了,你要访问的页面辞职了!!
# 再次查看日志,应包含错误详情
[root@Nginx timinglee.org]# cat lee.error
# 内容示例:... "/usr/local/nginx/html/lee/index.html" is not found (2: No such file or directory) ...

实验 10:Nginx 中建立下载服务器
实验目的:配置目录浏览、下载限速、文件大小及时间显示格式优化。
1. 准备测试文件
# 创建下载目录
[root@Nginx ~]# mkdir -p /usr/local/nginx/download
# 复制一个小文件用于测试
[root@Nginx ~]# cp /etc/passwd /usr/local/nginx/download/
# 使用 dd 命令创建一个 100MB 的大文件用于测速
# if=/dev/zero: 输入源为零设备
# of=...: 输出文件路径
# bs=1M: 块大小 1MB
# count=100: 复制 100 个块
[root@Nginx ~]# dd if=/dev/zero of=/usr/local/nginx/download/bigfile bs=1M count=100
2. 基础下载配置 (启用列表功能)
location /download {
root /usr/local/nginx;
# 开启目录自动索引功能 (目录浏览)
autoindex on;
}
3. 下载控速
location /download {
root /usr/local/nginx;
autoindex on;
# 限制下载速度为 1024k (1MB/s)
limit_rate 1024k;
}
测试命令:
# 使用 wget 下载测试速度
[root@Nginx ~]# wget http://lee.timinglee.org/download/bigfile
# 观察输出中的速度是否被限制在 1.00MB/s 左右
4. 显示文件大小优化
location /download {
root /usr/local/nginx;
autoindex on;
limit_rate 1024k;
# 关闭精确大小显示,改为人类可读格式 (如 100M, 1K)
autoindex_exact_size off;
}
5. 时间显示调整
location /download {
root /usr/local/nginx;
autoindex on;
limit_rate 1024k;
autoindex_exact_size off;
# 使用本地时间显示文件修改时间,而非 GMT 时间
autoindex_localtime on;
}
6. 设定页面风格
location /download {
root /usr/local/nginx;
autoindex on;
limit_rate 1024k;
autoindex_exact_size off;
autoindex_localtime on;
# 设置索引页面输出格式,支持 html, xml, json, jsonp
autoindex_format xml;
}
操作命令:
# 每次修改配置后重载 Nginx
[root@Nginx ~]# nginx -s reload
# 测试访问 (注意目录后需加 / 否则可能 301 跳转)
[root@Nginx ~]# curl lee.timinglee.org/download/

实验 11:Nginx 的文件检测
实验目的:使用 try_files 指令检测文件是否存在,实现伪静态或默认页 fallback。
1. 准备默认页面
# 创建默认返回内容的文件
[root@Nginx ~]# echo default > /usr/local/nginx/errorpage/default.html
[root@Nginx ~]# cat /usr/local/nginx/errorpage/default.html
default
2. 配置 Nginx
server {
listen 80;
server_name lee.timinglee.org;
error_page 404 405 503 502 /error;
error_log logs/timinglee.org/lee.error error;
# 设置根目录
root /usr/local/nginx/errorpage;
# 文件检测指令
# 依次检查:$uri (请求路径) -> $uri.html -> $uri/index.html
# 如果都不存在,则内部重定向到 /default.html
try_files $uri $uri.html $uri/index.html /default.html;
}
3. 重载并测试
# 重载配置
[root@Nginx ~]# nginx -s reload
# 测试访问一个不存在的路径
# 由于 try_files 的存在,不会返回 404,而是返回 default.html 的内容
[root@Nginx ~]# curl -v lee.timinglee.org/aaaaaaaaaa/
# 返回状态码:HTTP/1.1 200 OK
# 返回内容:default

更多推荐




所有评论(0)