nginx 从入门到实践 -基础篇(1)

来源:互联网 发布:html5网游源码 编辑:程序博客网 时间:2024/06/06 04:32

文章地址:http://www.haha174.top/article/details/251862

一. nginx 概述

nginx是一个开源且高性能、可靠的HTTP中间件、代理服务
这里只是简单的解释详细可以看这里(http://www.nginx.cn/doc/general/overview.html)

二.常见的HTTP 服务

有HTTPD-apache基金会
IIS-微软
GWS-GOOGLE等等
图解如下
这里写图片描述

三.为什么选择nginx

1.IO多路复用epoll
1)什么是io复用
这里写图片描述
使用一个socket 用并行处理的方式来处理多个io请求大致的解释是在单个线程通过记录跟踪每一个Sock(I/O流)的状态来同时管理多个I/O流. 发明它的原因,是尽量多的提高服务器的吞吐能力。可以看看如下图解
这里写图片描述
什么,你还是蒙蒙的大致就是“一个请求到来了,nginx使用epoll接收请求的过程是怎样的”, 多看看这个图就了解了。提醒下,ngnix会有很多链接进来, epoll会把他们都监视起来,然后像拨开关一样,谁有数据就拨向谁,然后调用相应的代码处理
具体详细的解释可以看这篇文章(https://www.zhihu.com/question/32163005)
2.轻量级
这里写图片描述
虽然没有httpd 那么丰富的功能和插件但是 功能代码模块化,易于开发和使用
3.cpu亲和
1)为什么需要亲和
nginx 作为一个接入层的中间件对于cpu的亲和尤为重要。那么他是怎么工作的呢。nginx有多个不同的worker进程进行处理假设我有一台服务器如下图
这里写图片描述
有双cpu每个cpu4个核心 ,然后我们把8个工作进程绑定到不同的cpu上 相当于每个cpu处理一个work这样 。减少切换cpu带来的性能损失。一用这种cpu亲 和的绑定方式可以减少额外的性能损失,提升工作效率。
2)什么是亲和
是一种把cpu核心和nginx工作进程绑定的方式,把每个worker进程固定在一个cpu上执行,减少切换cpu的cache miss ,获得更好的性能。
3.sengfile
我们都知道nginx在处理静态文件的效率是非常有优势的那么为什么呢这是因为nginx采用sengfile的工作机制。
对比与普通的http服务采用如下图的机制来传输文件。
这里写图片描述
当我们去请求一个文件的时候他要进过操作系统的内核空间和用户空间 最终到达socket 通过socket 使用response传递给用户 对于上述的流程来说需要进过多次的切换,而对于静态文件来说不需要进过用户空间进行处理直接可以通过内存空间到socket进行传输图示如下。
这里写图片描述
sendfile 正式利用到了这种模式也就是nginx在2.2版本后新加入的0拷贝的传输模式。把静态文件通过内核空间直接通过socket相应给用户。那么nginx在许多cdn的服务里面和许多处理静态文件的服务里面和动静分离处理静态文件的服务里面nginx的处理性能会比许多其他的http服务的性能要高很多

四.nginx快速搭建与基本参数的使用

1.nginx 版本
linux 主要有下面三个版本
Mainkine version –开发版
Stable version–稳定版
Legacy version –历史版本

2nginx下载安装
这里我们使用虚拟机通过yum的方式来安装 虚拟机的安装方式可以参考(http://www.haha174.top/article/details/255136)这篇文章
我们进入官网找到centos 的yum 源的配置(http://nginx.org/en/linux_packages.html#stable)配置如下

[nginx]name=nginx repobaseurl=http://nginx.org/packages/mainline/OS/OSRELEASE/$basearch/gpgcheck=0enabled=1

进入虚拟机 vi /etc/yum.repos.d/nginx.repo
将上述配置输入到文件中注意需要改一下配置

[nginx]name=nginx repobaseurl=http://nginx.org/packages/mainline/centos/7/$basearch/gpgcheck=0enabled=1

保存退出 使用 yum list|grep nginx 查看nginx 列表看下有没有配置成功 如果成功可以使用yum install nginx 安装nginx
或者使用 命令

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm   

后nginx install nginx 进行安装更简洁
安装完成后使用nginx -v 查看如果有版本信息说明安装成功了。

3nginx安装目录讲解
使用命令 rmp -ql nginx 可以列出 nginx 安装目录
下面说主要的说下
路径 类型 作用
/etc/logrotate.d/nginx 配置文件 nginx 日志轮转,用于 —- logrotate服务的日志切割
———————————————————————————————
/etc/nginx 目录配置文件 nginx主配置文件
/etc/nginx.conf - -
/etc/conf.d - -
/etc/conf.d/default.conf - -
———————————————————————————
/etc/nginx/fastcgi_params 配置文件 cgi相关配置,fastcgi配置
/etc/nginx/uwsgi_params — —-
/etc/nginx/scgi_params — ——
————————————————————————————
/etc/nginx/koi-utf 配置文件 编码转换映射转化文件
/etc/nginx/koi-win —— ————–
/etc/nginx/win-utf —– ————–
________________________________________________-_
/etc/nginx/mime.types 配置文件 设置 http协议 的 content - —— type与扩展名的对于关系
——————————————————————————
/usr.lib/systemd/system/nginx-debug.service
/usr.lib/systemd/system/nginx.service
/etc/sysconfig/nginx 配置文件 用于配置系统守护进程
/etc/sysconfig/nginx-debug 管理器管理方式
————————————————————————————
/usr/lib64/nginx/modiles 目录 nginx 模块目录
/etc/nginx/modules


/use/sbin/nginx 命令 nginx启动管理终端命令
/use/sbin/nginx-debug


/var/cache/nginx 目录 nginx 缓存
————————————————————————————
/var/log/nginx 目录 nginx 日志
————————————————————————————
4 nginx 启动命令
service nginx start 启动
service nginx stop 停止
service nginx restart 重启
文章地址:http://www.haha174.top/article/details/251862
免责声明:本篇文章学习自慕课网nginx 从入门到实践 (http://coding.imooc.com/class/121.html)只做学习用途。如有侵权行为请告知。

原创粉丝点击