文章总结: 本文档详述Web架构基础与HTTP协议,重点讲解Nginx服务器的安装配置、多站点部署及日志管理。内容涵盖Basic认证、SSL证书加密、HTTPS强制跳转、Gzip压缩及访问控制等安全优化措施,深入解析location优先级、变量应用与防盗链技术,为初学者提供构建安全Web环境的实战指南。 综合评分: 86 文章分类: WEB安全,安全建设
0x03 响应空行
分隔作用,响应头结束和响应体开始
0x04 响应主体
包含服务器返回的实际数据内容
0x05 HTTP状态码
200 OK301 永久跳转 被浏览器记住302 临时跳转 被浏览器记住403 权限拒绝404 文件找不到500 服务器内部错误502 错误的网关504 网关超时
0x06 HTTP版本
HTTP/0.9 仅GET方法,无头部功能极简,无法扩展HTTP/1.0 新增POST/HEAD、头部字段、状态码仅支持短连接、无Host头HTTP/1.1 长连接、Host头、扩展方法、分块传输HTTP/2.0 二进制帧、多路复用、头部压缩,需HTTPS部署
1.8 HTML简单了解
HTML ( HyperText Markup Language ) 超文本标记语言 ,由 SGML (标准标记语言)发展而来,也叫 Web 页面。扩展名是 .html 或 .htm 。
HTML 是一种用来制作网页的标准标记语言。超文本是指超出普通文本范畴的文档,可以包含文本、图片、视频、音频、链接等元素。
HTML 不是一种编程语言,而是一种写给网页浏览器、具有描述性的标记语言。
0x01 HTML结构和标签格式
<!DOCTYPE html><html lang = "en"> <head> <meta charset = "UTF-8"> <title>ida小站</title> </head> <body> <h1>Hello World<h1> </body></html>
0x02 结构释义
<!DOCTYPE html> 告诉浏览器使用什么样的html或xhtml来解析html文档。<html></html> 文档开始标记和结束标记,告诉浏览器是HTML文档,之间是文档头部<head> 和主体<body>。元素出现在文档开头部分,与之间的内容不会在浏览器的文档窗口显示,但是其间的元素有特殊重要的意义。<meta charset="UTF-8"> 声明编码方式用UTF-8字符集。<title></title> 定义网页标题,在浏览器标题栏显示。<body></body> 主体之间的文本是可见的网页主体内容。
0x03 标签语法
<标签名 属性1=“属性值1” 属性2=“属性值2”……>内容部分</标签名> <标签名 属性1=“属性值1” 属性2=“属性值2”…… />
1、HTML标签由尖括号包围的特定关键词2、标签分为闭合和自闭合两种标签3、HTML不区分大小写4、标签可以有若干个属性,也可以不带属性,比如就不带任何属性5、标签可以嵌套,但是不可以交叉嵌套6、XHTML是实现HTML到XML的过渡。
1.9 演示编写网页
编写html代码
指令释义location块: location ~* \.png$1nbsp;{ }
是 Nginx配置语法 , 定义对所有以 .png结尾的文件的处理方式。
~* : 是一个正则表达式修饰符,表示不区分大小写匹配 。\. : 匹配任意字符, 这里 用反斜杠 \转义, 含义就是一个点。\.png : 表示 匹配所有以 .png结尾的文件。$: 表示字符串结束。
条件判断释义: if ( $http_referer !~* "a.panch.com" ) { }
$http_referer : 代表 HTTP请求头 referer 字段,包含请求页面之前的页面地址。!~* : 是正则表达式的否定匹配修饰符,"a.panch.com" : 是要匹配的字符串。!~* "a.panch.com" : 此判断是检查referer字段中是否不包含a.panch.com 字符串。return 403: 判断为真(referer字段不含a.panch.com ),服务器返回403。
注意: 仅靠Referer检查限制对PNG图片访问不够安全, Referer字段可被用户伪造 。
进入配置: cd /etc/nginx/conf.d/编辑配置: vim 160.conf查看配置: cat -n 160.conf检查配置: nginx -t重启服务: systemctl restart nginx
此时查看第二个网站:发现 Logo无法显示
此时访问图片,返回 403报错,因为Referer为空,也不包含 a.panch.com 字符。
访问第一个网站时,发现无法显示 Logo图片,显示404报错,无法找到。
查看错误日志
发现 a网站访问的根目录为默认根目录,而非修改后的根目录,所以显示failed失败。
进入服务目录: cd /var/log/nginx/查看错误日志: cat -n error.log
默认根目录: /usr/share/nginx/html/改后根目录: /usr/share/nginx/html/one/
原因如下:带有符号的 location块的优先级高于不带符号的。
添加的 locatoin优先级更高,但没根目录,所以png图片信息自动到默认目录去找。
解决 1:在每个location块里都添加改动后的站点根目录(不推荐,太麻烦)。
解决 2:将站点根目录配置添加到server块里,在全局指定站点根目录。
此时查看第一个网站:恢复正常
查看第二个网站:无法盗链
十、Nginx中英文自动匹配
Nginx 服务器会通过双重语言适配机制为用户自动匹配网页内容:首先优先检测浏览器语言设置,若检测到英文偏好则展示英文内容,中文偏好则展示中文内容;若浏览器未明确语言设置,服务器会进一步通过IP地址判断地域,国内IP默认返回中文,国外IP默认返回英文。最终实现“用户无感知”的语言适配,确保不同地区、不同语言习惯的用户都能快速获取熟悉的网页内容。
10.1 案例演示
0x01 创建演示网站
复制第一个网站的配置文件作为新建网站的配置文件
进入配置目录: cd /etc/nginx/conf.d/查看配置文件: ls复制配置文件: cp 160.conf yuyan.conf
0x02 修改此网站配置文件
若accept_language值以en开头,则返回英文,否则返回中文,且会根据IP地址返回不同语言的网站。
编辑: vim yuyan.conf查看: cat -n yuyan.conf
网站域名server_name改为yuyan.com 在hosts文件中添加此域名C:\Windows\System32\drivers\etc\hosts
0x03 创建对应网站根目录
进入根目录: cd /usr/share/nginx/html/创建网站目录: mkdir yuyan创建中文目录: mkdir en创建英文目录: mkdir cn
关于日志配置,添加日志配置重启后,日志文件会自动添加。
分别在 en和cn里创建英文和中文版的index.html文件。
在里面分别写上中英文内容
注意:根目录配置变更到 location块里,需要填写详细根目录地址。
访问网站看效果
在浏览器设置里添加英文,选择英文选项,并移动到最顶端。
此时网页请求头的语言是英文开头
若中文放第一个位置则为中文开头
查看访问效果:显示为英文
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:南风安全站 南风 南风《手把手教你成为白帽黑客!Web架构基础(上)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论