02.Nginx基础应用

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)


本文 暂无 评论

Top