Nginx的优势,HTTP协议详解以及Nginx安装部署

一:Nginx的优势

nginx使用的是IO多路复用技术中的epoll技术,这种技术是大神 Davide Libenzi在2002年实现的。epoll 可以说是I/O 多路复用最新的一个实现,epoll 修复了poll 和select绝大部分问题, 比如:epoll 现在是线程安全的。 epoll 现在不仅告诉你sock组里面数据,还会告诉你具体哪个sock有数据,你不用自己去找了。其能够承担高并发,低内存消耗,高可靠性,热部署,其技术的特点是异步,非阻塞。如下所述。

每进来一个request,会有一个worker进程去处理。但不是全程的处理,处理到什么程度呢?处理到可能发生阻塞的地方,比如向上游(后端)服务器转发request,并等待请求返回。那么,这个处理的worker不会这么一直等着,他会在发送完请求后,注册一个事件:“如果upstream返回了,告诉我一声,我再接着干”。于是他就休息去了。这就是异步。此时,如果再有request 进来,他就可以很快再按这种方式处理。这就是非阻塞和IO多路复用。而一旦上游服务器返回了,就会触发这个事件,worker才会来接手,这个request才会接着往下走。这就是异步回调。

二:HTTP协议详解

1.HTTP:

1:概述:HTTP--Hyper Text Transfer Protocol,超文本传输协议,是一种建立在TCP上的无状态连接,整个基本的工作流程是客户端发送一个HTTP请求,说明客户端想要访问的资源和请求的动作,服务端收到请求之后,服务端开始处理请求,并根据请求做出相应的动作访问服务器资源,最后通过发送HTTP响应把结果返回给客户端。其中一个请求的开始到一个响应的结束称为事务,当一个事物结束后还会在服务端添加一条日志条目。

2:请求和响应:客户端和服务端通过交换各自的消息来进行交互。通常由像浏览器这样的客户端发出的消息叫做 
requests(请求),那么被服务端回应的消息就叫做 responses(响应)。

3:组件系统

客户端:user-agent user-agent就是任何能够为用户发起行为的工具。但实际上,这个角色通常都是由浏览器来扮演。对于发起请求来说,浏览器总是作为发起一个请求的实体。

Web服务端:服务端只是虚拟意义上:它可以是许多共同分担负载(负载平衡)的一组服务器组成的计算机群,也可以是一种复杂的软件,通过向其他计算机发起请求来获取部分或全部资源的软件。

Proxies: 在浏览器和服务器之间,有许多计算机和其他设备转发了HTTP的消息。因为Web栈层次结构的原因,它们大多数都出现在传输层、网络层和物理层上,对于HTTP的应用层来说就是透明的(虽然它们可能会对应用层的性能有重要影响)。

2.URI

1:URI:统一资源标识符,HTTP 请求的内容通称为"资源"。”资源“这一概念非常宽泛,它可以是你能够想到的格式。每个资源都由一个 (URI) 来进行标识。

2:URL:URL即统一资源定位符,它是 URI 的一种,也被称为网页地址。

3:URN:URN仅用于命名,而不指定地址,URN 是另一种形式的 URI,它通过特定命名空间中的唯一名称来标识资源。。

3.报文

请求示例解析:  • 一个HTTP的method,经常是由一个动词像GET, POST 或者一个名词像OPTIONS,HEAD来定义客户端的动
 作行为的。通常客户端的操作都是获取资源(用GET方法)或者发送一个HTML form表单的值(用POST方法)。

  •要获取的资源的路径,通常是上下文中就很明显的元素资源的URL,它没有protocol (http://),domain(developer.mozilla.org),或是TCP的port(HTTP是80端口)。

 • HTTP协议的版本号。

 • 为服务端表达其他信息的可选择性的headers。

 • HTTP的版本号。

 • 一个状态码(status code),来告知对应的请求发送成功或失败,以及失败的原因。200是成功了

 • 一个状态信息,这个信息是非权威的状态码描述信息,也就是说可以由服务端自行设定的。

 • HTTP headers,与请求的很像。

 • 可选的,但是比在请求报文中更加常见地包含获取资源的body。

4:通过实验分析http报头信息

1 执行下载:wget -d http://nginx.org/download/nginx-1.12.1.tar.gz

2 分析Debug信息

---request begin---                                            请求开始

GET /download/nginx-1.12.1.tar.gz HTTP/1.1       动作下载 页面地址 HTTP版本

User-Agent: Wget/1.14 (linux-gnu)                       代理程序:wget

Accept: */*                                                     接收的类型:任何类型

Host: nginx.org                                                目标主机:nginxorg

Connection: Keep-Alive                                      链接类型:启动长连接

---request end---                                          请求结束

HTTP request sent, awaiting response...                    发送请求中

---response begin---                                            响应开始

HTTP/1.1 200 OK                                             协议版本 状态码 结果

Server: nginx/1.13.3                                           服务器版本

Date: Fri, 06 Oct 2017 09:05:15 GMT                     响应时间

Content-Type: application/octet-stream                   接收应用类型:字节流(软件类)

Content-Length: 981093                                      文档大小

Last-Modified: Tue, 11 Jul 2017 15:45:09 GMT        资源最后修改的时间(stat文件即可查看)

Connection: keep-alive                                          长连接开启

Keep-Alive: timeout=15                                          长连接有效期

ETag: "5964f285-ef865"                                         校验值

Accept-Ranges: bytes                                            接收范围:字节的范围

---response end---                                                 响应结束

三.Nginx 部署-Yum

nginx官网:http://www.nginx.org

Nginx版本类型:Mainline version: 主线版,即开发版;Stable version: 最新稳定版,生产环境上建议使用的版本

Legacy versions: 遗留的老版本的稳定版

配置YUM源官方地址,这里面有详细的配置方案:http://nginx.org/en/linux_packages.html#RHEL-CentOS

选择与您系统相匹配的进行下载。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker是一个开源的容器化平台,用于轻松地打包、部署和运行应用程序。而Nginx是一个高性能的开源反向代理服务器,也是一个流行的Web服务器。 在使用Docker部署Nginx时,你需要以下几个步骤: 1. 首先,你需要安装Docker。你可以根据你的操作系统去官方网站下载并安装Docker。 2. 在安装完成后,你需要编写一个Dockerfile文件来定义Nginx容器的构建过程。一个简单的例子如下: ```dockerfile FROM nginx:latest COPY nginx.conf /etc/nginx/nginx.conf EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] ``` 这个Dockerfile使用最新版本的Nginx作为基础镜像,然后将自定义的`nginx.conf`文件复制到容器中的`/etc/nginx/nginx.conf`路径下。接着,将容器的80端口暴露出来,并设置Nginx以非守护进程的方式运行。 3. 在同一目录下创建`nginx.conf`文件,并在其中进行Nginx的相关配置。例如,可以指定Nginx监听的端口、代理规则等。 4. 接下来,使用Docker命令来构建镜像。在终端中切换到Dockerfile所在的目录,并执行以下命令: ``` docker build -t my-nginx . ``` 这个命令会根据Dockerfile构建一个名为`my-nginx`的镜像。注意最后的`.`表示Dockerfile所在的路径。 5. 构建完成后,你可以使用以下命令来运行Nginx容器: ``` docker run -d -p 80:80 my-nginx ``` 这个命令会在后台运行一个名为`my-nginx`的容器,并将主机的80端口映射到容器的80端口。 现在,你已经成功地使用Docker部署Nginx。你可以通过在浏览器中访问`http://localhost`来验证Nginx是否正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值