1.Nginx基本简述
Nginx
是一个开源且高性能、可靠的HttpWeb
服务、代理服务。
开源: 直接获取源代码
高性能: 支持海量并发
可靠: 服务稳定
1.常见的 HTTP Web服务
1.HTTPD -> Apache基金会
2.IIS -> 微软
3.GWS -> Google
4.openrestry
5.tengline -> 淘宝基于Nginx开发
2.为什么选择 Nginx
1.Nginx非常轻量
1.功能模块少(源代码仅保留http与核心模块代码,其余不够核心代码会作为插件来安装)
2.代码模块化(易读,便于二次开发,对于开发人员是非常友好)
2.主流公司都选择Nginx
1.大公司都选择Nginx。
2.统一技术工具,降低维护成本,减少故障率。
3.Nginx涉足场景较多,技术更新成本低。
3.Nginx采用Epool
网络模型, Apache
采用Select
模型。
Select: 当用户发起一次请求,select模型就会进行一次遍历扫描,从而导致性能底下。
Epool: 当用户发起请求,epool模型会直接进行处理,效率高效,并无连接限制。
3.Nginx 应用场景
静态处理
反向代理
负载均衡
资源缓存
安全防护
访问限制
访问认证
2.Nginx快速安装
Mainline version 开发版
Stable version 稳定版
Legacy version 历史版本
1.基础环境准备
//确认系统网络 [root@Nginx ~]# ping baidu.com//关闭firewalld [root@Nginx ~]# systemctl stop firewalld[root@Nginx ~]# systemctl disable firewalld//临时关闭selinux [root@Nginx ~]# setenforce 0//初始化基本目录 [root@Nginx ~]# mkdir /soft/{code,logs,package,backup} -p
2.安装nginx
所需依赖,配置nginx
官方yum
源
//基本安装包 [root@Nginx ~]# yum install -y gcc gcc-c++ autoconf \pcre pcre-devel make automake wget httpd-tools vim tree //配置Nginx官方Yum源 [root@Nginx ~]# vim /etc/yum.repos.d/nginx.repo[nginx]name=nginx repobaseurl=http://nginx.org/packages/centos/7/$basearch/gpgcheck=0enabled=1
3.安装nginx
//安装Nginx[root@Nginx ~]# yum install nginx -y//查看Nginx当前版本[root@Nginx ~]# nginx -vnginx version: nginx/1.12.2
3.Nginx安装目录
为了让大家更清晰的了解Nginx
软件的全貌,有必要介绍下Nginx
安装后整体的目录结构及文件功能。
[root@Nginx ~]# rpm -ql nginx
如下表格对Nginx
安装目录做详细概述
路径 | 类型 | 作用 |
---|---|---|
/etc/nginx /etc/nginx/nginx.conf /etc/nginx/conf.d /etc/nginx/conf.d/default.conf | 配置文件 | Nginx主配置文件 |
/etc/nginx/fastcgi_params /etc/nginx/scgi_params /etc/nginx/uwsgi_params | 配置文件 | Cgi、Fastcgi、Uwcgi配置文件 |
/etc/nginx/win-utf /etc/nginx/koi-utf /etc/nginx/koi-win | 配置文件 | Nginx编码转换映射文件 |
/etc/nginx/mime.types | 配置文件 | http协议的Content-Type与扩展名 |
/usr/lib/systemd/system/nginx.service | 配置文件 | 配置系统守护进程管理器 |
/etc/logrotate.d/nginx | 配置文件 | Nginx日志轮询,日志切割 |
/usr/sbin/nginx /usr/sbin/nginx-debug | 命令 | Nginx终端管理命令 |
/etc/nginx/modules /usr/lib64/nginx /usr/lib64/nginx/modules | 目录 | Nginx模块目录 |
/usr/share/nginx /usr/share/nginx/html /usr/share/nginx/html/50x.html /usr/share/nginx/html/index.html | 目录 | Nginx默认站点目录 |
/usr/share/doc/nginx-1.12.2 /usr/share/man/man8/nginx.8.gz | 目录 | Nginx的帮助手册 |
/var/cache/nginx | 目录 | Nginx的缓存目录 |
/var/log/nginx | 目录 | Nginx的日志目录 |
4.Nginx编译参数
查看Nginx编译参数
[root@Nginx ~]# nginx -V
下表展示了Nginx编译参数选项以及作用
编译选项 | 作用 |
---|---|
--prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock | 程序安装目录和路径 |
--http-client-body-temp-path=/var/cache/nginx/client_tem --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp | 临时缓存文件 |
--user=nginx --group=nginx | 设定Nginx进程启动用户和组(安全) |
--with-cc-opt | 设置额外的参数将被添加到CFLAGS变量 |
--with-ld-opt | 设置附加的参数, 链接系统库 |
5.Nginx配置文件
Nginx主配置文件/etc/nginx/nginx.conf
是一个纯文本类型的文件,整个配置文件是以区块的形式组织的。一般,每个区块以一对大括号{}
来表示开始与结束。
1.CoreModule 核心模块
2.EventModule 事件驱动模块
3.HttpCoreModule http内核模块需了解扩展项
CoreModule层下可以有Event、HTTP
HTTP模块层允许有多个Server层, Server主要用于配置多个网站
Server层又允许有多个Location, Location主要用于定义网站访问路径
# CoreModule 核心模块user www; #Nginx进程所使用的用户worker_processes 1; #启动的work进程数(CPU数量一致或auto)error_log /log/nginx/error.log #错误日志pid /var/run/nginx.pid #Nginx服务启动后产生的pid进程号# events事件模块events { worker_connections //每个worker进程支持的最大连接数 use //事件驱动模型, epoll默认 } //http内核模块(定义公共基础配置) http { ... //使用Server配置网站, 每个Server{}代表一个网站(简称虚拟主机) 'server' { listen 80; #监听端口, 默认80 server_name localhost; #提供服务的域名或主机名 access_log /var/log/nginx/host.access.log //控制网站访问路径 'location' / { root /usr/share/nginx/html; #存放网站代码路径 index index.html index.htm; #服务器返回的默认页面文件 } #指定错误代码, 统一定义错误页面, 错误代码重定向到新的Locaiton error_page 500 502 503 504 /50x.html; } ... //第二个虚拟主机配置 'server' { ... } }
7.Nginx常用状态码
200 正常请求
301 永久跳转
302 临时跳转
400 请求参数错误
401 账户密码错误(authorization required)
403 权限被拒绝(forbidden)
404 文件没找到(Not Found)
413 用户上传文件大小限制(Request Entity Too Large)
502 后端服务无响应(boy gateway)
504 后端服务执行超时(Gateway Time-out)