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相关推荐

  1. nginx教程全集汇总(ttlsa出品)

    为什么80%的码农都做不了架构师?>>>    nginx教程写了一段时间,无意中发现,nginx相关文章已经达到了近100篇了.觉得很有必要汇总到一起,它是我们运维生存时间的一片心 ...

  2. nginx汇总(z)

    Nginx相关文章 Nginx基础 1.  nginx安装 2.  nginx 编译参数详解 3.  nginx安装配置+清缓存模块安装 4.  nginx+PHP 5.5 5.  nginx配置虚拟 ...

  3. linux7为nginx添加服务,CentOS7添加Nginx为系统服务

    1.编辑系统服务vim /usr/lib/systemd/system/nginx.service [unit] Description=Web Service After=network.targe ...

  4. 基于Nginx反向代理及负载均衡

    基于Nginx反向代理及负载均衡 参考:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass 只要没有被启用,默认就是 ...

  5. 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 ...

  6. nginx支持text html,BT面板重启Nginx提示“nginx: [warn] duplicate MIME type “text/html””解决办法...

    很多时候我们在进行了一系列站点优化配置后,经常会出现一些未知的问题.比如虾皮路之前就遇到过了,在BT宝塔面板里面重启Nginx或者重载Nginx的时候,提示"nginx: [warn] du ...

  7. 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 张宴 ...

  8. nginx日志输出配置json格式

    nginx日志输出配置json格式 nginx服务器日志相关指令主要有两条:一条是log_format,用来设置日志格式:另外一条是access_log,用来指定日志文件的存放路径.格式和缓存大小. ...

  9. php代码执行相关函数,关于当前PHP脚本运行时系统信息相关函数

    关于当前PHP脚本运行时系统信息相关函数 我们的 PHP 在执行的时候,其实可以获取到非常多的当前系统相关的信息.就像很多开源的 CMS 一般会在安装的时候来检测一些环境信息一样,这些信息都是可以方便 ...

最新文章

  1. linux ps命令大全,Linux ps命令例子汇总
  2. USACO 做题小结
  3. ​【Python】Python中好用的命令行参数解析模块
  4. Python异常体系结构图
  5. A English version for my blog start.
  6. std::tostring_枚举:如何正确使用name()和toString()方法
  7. mysql: union / union all / 自定义函数用法详解
  8. 使用var声明的变量 和 直接赋值并未声明的变量的区别
  9. 【CSS3】CSS3文本字体相关属性大全
  10. 【连载】如何掌握openGauss数据库核心技术?秘诀二:拿捏执行器技术(2)
  11. mysql的逻辑备份和恢复
  12. [19/03/12-星期二] 数组_遍历(for-each)复制java.util.Arrays类
  13. You have new mail in /var/spool/mail/root提示的原因与解决办法
  14. Ubuntu快速设置指南
  15. SPSS26中文免费版下载和安装教程
  16. matlab求最值(极值)
  17. zbrush中减面操作
  18. YNUOJ-开学大作战之补番真开心(2018/8/29)
  19. android 配置aspect_Android全面屏适配
  20. 模拟NAND FLASH 读写BCH ECC校验

热门文章

  1. WebSocket 实战
  2. 电路图中常用的英文缩写的中文解释
  3. ipvsadm使用简介
  4. 关于SQLServer2000的全文检索使用心得
  5. C#线程、前后台线程
  6. SDUT OJ 数据结构实验之排序一:一趟快排
  7. ASP.net:查找框设默认
  8. SqlServer英文单词全字匹配
  9. VSC 1.0 (netapp存储在vSphere vCenter 4上的插件)
  10. 分享两篇Google Map API的介绍