Day 49 Nginx
Day 49 Nginx
1.1 http原理
DNS解析
TCP三次握手
TCP四次挥手
HTTP请求头信息
HTTP响应头信息
1.1.1 用户访问网站流程:
1.用户输入域名->浏览器跳转->DNS解析( 递归查询 | 迭代查询 )
客户端向服务端发起查询->递归查询
服务端向服务端发起查询->迭代查询
2.由浏览器向服务端发起TCP连接(三次握手)
客户端 -->请求包连接-syn=1 seq=x 服务端
服务端 -->向应客户端syn=1 ack=x+1 seq=y 客户端
客户端 -->建立连接 ack=y+1 seq=x+1 服务端
3.客户端发起http请求:
1.请求的方法是什么: Get 获取
2.请求的Host主机是: www.oldboyedu.com
3.请求的资源是什么: /index.html
4.请求的端口是什么: 默认http是80 https 443
5.请求携带的参数是: 属性(请求的类型、压缩、认证、等等)
4.服务端响应的内容是:
1.响应服务端使用的软件(nginx)
2.响应请求文件的类型
3.响应请求的文件是否进行压缩
4.响应请求的主机是否进行长连接
5.客户端向服务端发起TCP断开(四次挥手)
客户端 --> 断开请求 fin=1 seq=x --> 服务端
服务端 --> 响应断开 fin=1 ack=x+1 seq=y --> 客户端
服务端 --> 断开连接 fin=1 ack=x+1 seq=z --> 客户端
客户端 --> 确认断开 fin=1 ack=z+1 seq=sj --> 服务端
第2章
2.1 Nginx是一个开源且高性能、可靠的HttpWeb服务、代理服务。
开源: 直接获取源代码
高性能: 支持海量并发
可靠: 服务稳定
nginx+lua 可实现waf防火墙 (7层应用层防火墙 http://)
传统防火墙工作在四层tcp/udp (22|80)
1.花钱解决问题()
2.自己解决问题(浪费时间、没有上浮空间、)
2.2 为什么选择 Nginx
2.2.1 Nginx非常轻量
1.功能模块少(源代码仅保留http与核心模块代码,其余不够核心代码会作为插件来安装)
2.代码模块化(易读,便于二次开发,对于开发人员是非常友好)
2.2.2 互联网公司都选择Nginx
1.技术成熟, 大公司都选择Nginx
2.统一技术选型工具Nginx, 降低维护成本,减少故障几率。
3.Nginx涉足场景较多,技术更新成本低。
2.2.3 Nginx采用Epool网络模型, Apache采用Select模型。
Select: 当用户发起一次请求,select模型就会进行一次遍历扫描,从而导致性能低下。
Epool: 当用户发起请求,epool模型会直接进行处理,效率高效,并无连接限制。
2.3 Nginx 应用场景
静态处理(mp4|html|png|jpg) -> 服务端存放的是什么,客户端浏览器就展示什么
反向代理
负载均衡
代理缓存()
访问限制(tcp连接数、http请求数)
访问认证(用户和密码、来源IP)
安全防护(waf防火墙,使用lua实现的,花钱买服务,花钱买经验)
2.4 Nginx安装
1.epel仓库=>Nginx(1.版本低 2.配置文件不一样)
2.源码编译=>Nginx(1.复杂 2.企业不使用)
3.官方仓库=>Nginx)(√1.版本较新 2.安装简单 3.配置不复杂)
2.4.1 配置Nginx官方的仓库
[root@web01 ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
2.4.2 安装Nginx【一定确认是通过官方的仓库安装上】
[root@web01 ~]# yum install nginx -y
2.4.3 检查版本【1.14.0】
[root@web01 ~]# nginx -v
nginx version: nginx/1.14.0
2.4.4 查看nginx编译的参数
nginx -V
2.4.5 编译参数越多越好,还是越少越好?
源码编译好了,做成的rpm包
越少:功能少,后期可维护性差
越多:功能全,覆盖广,可维护性强
2.5 Nginx配置文件
Nginx主配置文件/etc/nginx/nginx.conf是一个纯文本类型的文件,整个配置文件是以区块的形式组织的。一般,每个区块以一对大括号{}来表示开始与结束。
1.CoreModule 核心模块
2.EventModule 事件驱动模块
3.HttpCoreModule http内核模块
server 代表1网站[视频]
location 定义网站访问的路径
server 代表2网站[博客]
server 代表3网站[论坛]
2.5.1 需了解扩展项
CoreModule层下可以有Event、HTTP
HTTP模块层允许有多个Server层, Server主要用于配置多个网站
Server层又允许有多个Location, Location主要用于定义网站访问路径
[root@web01 ~]# cat /etc/nginx/nginx.conf
user nginx; # 运行nginx程序的用户
worker_processes 1; # 运行的进程数量
error_log /var/log/nginx/error.log warn; # 错误日志
pid /var/run/nginx.pid; # 存放nginx进程运行的pid
events { # 事件模块开始
worker_connections 1024; # worker进程的最大连接数
use epool; # 事件使用的模型(默认epool)
} # 事件模块结束
http { # http开始
include /etc/nginx/mime.types; # 包含
default_type application/octet-stream; #
# 定义日志的格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# 访问日志存放的路径【main是日志的格式】
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65; # 长连接
#gzip on; # 压缩
include /etc/nginx/conf.d/*.conf; # 所有的conf结尾的文件都被包含起来
server { # 我要定义一个网站【博客】
listen 80; # 监听80端口
server_name localhost; # 对应的域名
location / { # 用户请求域名时,默认匹配的规则
root /usr/share/nginx/html; # 网站根目录
index index.html index.htm; # 返回的默认页面
}
error_page 500 502 503 504 /50x.html; # 定义错误页面的
}
}
2.6 部署一个站点:
2.6.1 对应的nginx配置文件
[root@web01 conf.d]# cat /etc/nginx/conf.d/oldboy_game.conf
server {
listen 80;
server_name game.oldboy.com;
location / {
root /oldboy_code;
index index.html;
}
}
2.6.2 对应的源代码文件【手动-太low】
[root@web01 conf.d]# mkdir /oldboy_code
[root@web01 conf.d]# cd /oldboy_code/
[root@web01 oldboy_code]# rz html5.zip
[root@web01 oldboy_code]# unzip html5.zip
[root@web01 oldboy_code]# pwd
/oldboy_code
[root@web01 oldboy_code]# ls
ceshi game html5.zip img index.html readme.txt
2.6.3 检查nginx的语法
[root@web01 oldboy_code]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
2.6.4 重载Nginx【reload|restart】
[root@web01 oldboy_code]# #nginx -s reload
[root@web01 oldboy_code]# systemctl reload nginx
2.6.5 5.如何访问:
1.通过服务器的IP直接访问:10.0.0.7
2.通过域名方式访问
Windows: C:\Windows\System32\drivers\etc\hosts 文件
Mac: sudo vim /etc/hosts
10.0.0.7 game.oldboy.com
3.使用ping命令测试域名解析是否正常
2.6.6 Nginx搭建静态游戏网页
1.具备Nginx的配置文件[/etc/nginx/conf.d/xx.conf]
2.根据nginx配置文件中定义的路径,准备对应的源代码
3.运行对应的Nginx
4.客户端通过域名访问【hosts文件进行解析域名-->假】
转载于:https://blog.51cto.com/13859649/2176127
Day 49 Nginx相关推荐
- nginx教程全集汇总(ttlsa出品)
为什么80%的码农都做不了架构师?>>> nginx教程写了一段时间,无意中发现,nginx相关文章已经达到了近100篇了.觉得很有必要汇总到一起,它是我们运维生存时间的一片心 ...
- nginx汇总(z)
Nginx相关文章 Nginx基础 1. nginx安装 2. nginx 编译参数详解 3. nginx安装配置+清缓存模块安装 4. nginx+PHP 5.5 5. nginx配置虚拟 ...
- linux7为nginx添加服务,CentOS7添加Nginx为系统服务
1.编辑系统服务vim /usr/lib/systemd/system/nginx.service [unit] Description=Web Service After=network.targe ...
- 基于Nginx反向代理及负载均衡
基于Nginx反向代理及负载均衡 参考:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass 只要没有被启用,默认就是 ...
- CentOS7添加Nginx为系统服务
1.编辑系统服务 1 2 3 4 5 6 7 8 9 10 11 12 vim /usr/lib/systemd/system/nginx.service [unit] Description=We ...
- nginx支持text html,BT面板重启Nginx提示“nginx: [warn] duplicate MIME type “text/html””解决办法...
很多时候我们在进行了一系列站点优化配置后,经常会出现一些未知的问题.比如虾皮路之前就遇到过了,在BT宝塔面板里面重启Nginx或者重载Nginx的时候,提示"nginx: [warn] du ...
- Nginx 0.5.33 + PHP 5.2.5(FastCGI)搭建胜过Apache 10倍的Web服务器(第2版)[原创]
Nginx 0.5.33 + PHP 5.2.5(FastCGI)搭建胜过Apache 10倍的Web服务器(第2版)[原创] 大 | 中 | 小 [ 2007-12-3 18:31 | by 张宴 ...
- nginx日志输出配置json格式
nginx日志输出配置json格式 nginx服务器日志相关指令主要有两条:一条是log_format,用来设置日志格式:另外一条是access_log,用来指定日志文件的存放路径.格式和缓存大小. ...
- php代码执行相关函数,关于当前PHP脚本运行时系统信息相关函数
关于当前PHP脚本运行时系统信息相关函数 我们的 PHP 在执行的时候,其实可以获取到非常多的当前系统相关的信息.就像很多开源的 CMS 一般会在安装的时候来检测一些环境信息一样,这些信息都是可以方便 ...
最新文章
- linux ps命令大全,Linux ps命令例子汇总
- USACO 做题小结
- ​【Python】Python中好用的命令行参数解析模块
- Python异常体系结构图
- A English version for my blog start.
- std::tostring_枚举:如何正确使用name()和toString()方法
- mysql: union / union all / 自定义函数用法详解
- 使用var声明的变量 和 直接赋值并未声明的变量的区别
- 【CSS3】CSS3文本字体相关属性大全
- 【连载】如何掌握openGauss数据库核心技术?秘诀二:拿捏执行器技术(2)
- mysql的逻辑备份和恢复
- [19/03/12-星期二] 数组_遍历(for-each)复制java.util.Arrays类
- You have new mail in /var/spool/mail/root提示的原因与解决办法
- Ubuntu快速设置指南
- SPSS26中文免费版下载和安装教程
- matlab求最值(极值)
- zbrush中减面操作
- YNUOJ-开学大作战之补番真开心(2018/8/29)
- android 配置aspect_Android全面屏适配
- 模拟NAND FLASH 读写BCH ECC校验