nginx
web基础 http 协议
HTTP 全称: Hyper Text Transfer Protocol 中文名:超文本传输协议
什么是URL
URL 即统一资源定位符(Uniform Resource Locator),用来唯一地标识万维网中的某一个文档。
URL 由协议、主机和端口(默认为80)以及文件名三部分构成
http:// class.driverzeng.com /15648000575258.html
# 协议 # 主机:端口 # 文件名
协议 http:// https://
主机端口 class.driverzeng.com:80
文件名 15648000575258.html
什么是超文本传输协议
是一种按照URL指示,将超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的应用层协议,以实现超链接的功能。
# 在浏览器之中输入网址访问页面
http://class.driverzeng.com/15648000575258.html
1.浏览器分析url
http://class.driverzeng.com/15648000575258.html
2.浏览器向DNS请求分析IP地址
- 本地DNS
如果本地DNS里有class.driverzeng.com 把IP返回给浏览器
如果没有就往DNS服务器做解析
- DNS服务器 13根域
.com
.cn
.org
.xyz
.net
.gov
.edu
- 递归查询
class.driverzeng.com/15648000575258.html
class.driverzeng.com ---- A记录
- 迭代查询
DNS服务器里去找
3.浏览器收到了IP地址之后
10.0.0.7:80
IP:80建立连接
TCP 三次握手
4.浏览器向web服务器发送GET请求
10.0.0.7 GET 下载15648000575258.html
5.web服务器接收到了GET之后 返回给浏览器
/var/www/html/15648000575258.html
6.浏览器确保接收到了15648000575258.html
断开连接
TCP 四次挥手
7.浏览器展示web页面在网页中
web服务器
浏览器
DNS
单身狗版HTTP工作原理》
单身刘大哥:浏览器饰
中介大哥:DNS饰
小姐姐照片:URL饰
小姐姐:服务器饰
1.首先作为单身狗的浏览器,在拿到一个URL(小姐姐照片)之后,先分析(意淫)...身材,脸蛋
emmmmm...不可描述。
2.然后找到DNS(中介大哥),哥,你把这个小姐姐的,电话,微信,QQ...发给我呗
3.DNS(中介大哥),开始找,这个小姐姐的信息...找到手机号110.111.112.113返回给这个姓刘的单身
狗(浏览器)
4.刘大哥拿到手机号之后,欣喜若狂,于是就开始打电话(建立TCP连接)给小姐姐。
5.刘大哥,打电话,给小姐姐,发出邀约请求(HTTP请求报文,GET /index.html)我们见一面吧,电影
院,公园,酒店...都可以。
6.小姐姐,回应刘大哥的请求,(HTTP响应报文)现在是大夏天的公园热,电影院又黑,我怕黑...那就酒店
见吧,你开好房间等我。
7.挂掉电话,(释放TCP连接)
8.刘大哥和小姐姐,在酒店见面,关好门,拉上窗帘,掀开被子,在床上,进入被窝,刘大哥掏出.........
自己的手表,你看我的手表是夜光的(显示html页面)...活该单身
访问网站分析
http状态码
200 页面正常访问
301 永久重定向
302 临时重定向
304 浏览器的缓存
307 内部重定向
400 客户端错误
401 认证失败
403 权限不足
404 页面找不到
500 服务器的内部问题(代码问题 服务器的问题)
502 bad gateway 后端服务问题
503 服务器过载 访问的评率过快
504 后端服务超时
Nginx基础概述
nginx简述
Nginx是一个开源且高性能、可靠的Http Web服务、代理服务。
开源: 直接获取源代码
高性能: 支持海量并发
可靠: 服务稳定
我们为什么选择Nginx服务
Nginx 非常轻量
功能模块少 (源代码仅保留http与核心模块代码,其余不够核心代码会作为插件来安装)
代码模块化 (易读,便于二次开发,对于开发人员非常友好)
互联网公司都选择 Nginx
1.Nginx技术成熟,具备的功能是企业最常使用而且最需要的
2.适合当前主流架构趋势, 微服务、云架构、中间层
3.统一技术栈, 降低维护成本, 降低技术更新成本。
Nginx 采用 Epool 网络模型, Apache 采用 Select 模型
Select: 当用户发起一次请求,select模型就会进行一次遍历扫描,从而导致性能低下。
Epool: 当用户发起请求,epool模型会直接进行处理,效率高效,并无连接限制
Ngxin快速安装
Nginx的安装方式
1.源码编译=>Nginx (1.版本随意 2.安装复杂 3.升级繁琐 4.规范 5.便于管理)
2.epel仓库=>Nginx (1.版本较低 2.安装简单 3.配置不易读)
3.官方仓库=>Nginx (1.版本较新 2.安装简单 3.配置易读)
Nginx官方仓库下载
# 添加nginx源
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
# 安装nginx
yum install -y nginx
nginx-1.26.0
Nginx启停
# 启动nginx
systemctl start nginx
nginx
# 停止nginx
systemctl stop nginx
nginx -s stop
# 重启nginx
systemctl restart nginx
nginx -s restart
# 重载
systemctl reload nginx
nginx -s reload
相关文件
1.Nginx主配置文件
路径 | 类型 | 作用 |
---|---|---|
/etc/nginx/nginx.conf | 配置文件 | nginx主配置文件 |
/etc/nginx/conf.d/*.conf | 配置文件 | 默认网站配置文件 |
2.*.Nginx*代理相关参数文件
路径 | 类型 | 作用 |
---|---|---|
/etc/nginx/fastcgi_params | 配置文件 | Fastcgi代理配置文件 |
/etc/nginx/scgi_params | 配置文件 | scgi代理配置文件 |
/etc/nginx/uwsgi_params | 配置文件 | uwsgi代理配置文件 |
*3.Nginx*编码相关配置文件
路径 | 类型 | 作用 |
---|---|---|
/etc/nginx/win-utf | 配置文件 | Nginx编码转换映射文件 |
/etc/nginx/koi-utf | 配置文件 | Nginx编码转换映射文件 |
/etc/nginx/koi-win | 配置文件 | Nginx编码转换映射文件 |
/etc/nginx/mime.types | 配置文件 | Content-Type与扩展名 |
4.Nginx管理相关命令
路径 | 类型 | 作用 |
---|---|---|
/usr/sbin/nginx | 命令 | Nginx命令行管理终端工具 |
/usr/sbin/nginx-debug | 命令 | Nginx命令行与终端调试工具 |
nginx主配置文件讲解
# 核心模块
user nginx; # 启动nignx的用户
worker_processes auto; # nginxworker进程数 auto是根据服务器的cpu自行判断
error_log /var/log/nginx/error.log notice; # 错误日志的路径和文件名称
pid /var/run/nginx.pid; # nginx进程的pid信息
# 事件驱动模块
events {
worker_connections 1024;#每个worker进程支持的最大连接数
use epoll; #事件驱动模型, epoll默认
}
# HttpCoreModule(http内核模块)
http {
# 日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# 访问日志
access_log /var/log/nginx/access.log main;
# 高效文件传输
sendfile on;
# 搭配sendfile一起使用
tcp_nopush on;
# 搭配sendfile一起使用
tcp_nodelay on;
# 长连接格式超时时间是65s
keepalive_timeout 65;
types_hash_max_size 4096;
# nginx相关的配置的类型配置文件
include /etc/nginx/mime.types;
# 默认类型
default_type application/octet-stream;
# nignx网站相关配置文件的编写路径 和文件和格式
include /etc/nginx/conf.d/*.conf;
server {
listen 80; # nginx默认的端口 80
listen [::]:80;
server_name _; # 提供的域名
root /usr/share/nginx/html; # 站点目录 存放网站代码的目录
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}
简单配置一个nginx网页
# 编辑nginx的配置文件
vim /etc/nginx/conf.d/1.conf
server{
listen 80;
server_name www.hh.com;
root /code;
index index.html;
}
# 检测nginx语法
nginx -t
nginx: the configuration file /opt/nginx-1.26.0/conf/nginx.conf syntax is ok
nginx: configuration file /opt/nginx-1.26.0/conf/nginx.conf test is successful
# 创建站点目录
mkdir /code
# 准备索引文件
[root@web02 nginx-1.26.0]# echo 123 > /code/index.html
[root@web02 nginx-1.26.0]# cat /code/index.html
123
# 启动nginx
systemctl restart nginx
# 检查进程和端口
[root@web02 nginx-1.26.0]# ps -ef | grep nginx
root 13755 1 0 11:38 ? 00:00:00 nginx: master process
/usr/sbin/nginx
nginx 13757 13755 0 11:38 ? 00:00:00 nginx: worker process
root 13762 6942 0 11:39 pts/0 00:00:00 grep --color=auto nginx
[root@web02 nginx-1.26.0]# netstat -lntup | grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
13755/nginx: master
tcp6 0 0 :::80 :::* LISTEN
13755/nginx: master
# 本地DNS
windows键 + r
nginx搭建小游戏
# 编辑nginx配置文件
vim /etc/nginx/conf.d/1.conf
server{
listen 80;
server_name 10.0.0.8;
root /code/h5_games;
index index.html;
}
# 准备站点目录
mkdir /code
# 准备游戏代码
cd /code
wget http://test.driverzeng.com/Nginx_Code/h5_games.zip
# 解压代码
cd /code
unzip h5_games.zip
# 检测nginx
nginx -t
nginx: the configuration file /opt/nginx-1.26.0/conf/nginx.conf syntax is ok
nginx: configuration file /opt/nginx-1.26.0/conf/nginx.conf test is successful
# 重启nginx
systemctl restart nginx
# 访问10.0.0.8
10.0.0.8