学习是一个逐步发现自己无知的过程!

Nginx应用

Nginx基础应用

Nginx简述

Nginx是一个开源且高性能、可靠的HttpWeb服务、代理服务。

开源: 直接获取源代码 高性能: 支持海量并发 可靠: 服务稳定

常见的 HTTP Web服务

1.HTTPD -> Apache基金会<br/>2.IIS -> 微软 3.GWS -> Google 4.openrestry 5.tengline -> 淘宝基于Nginx开发

为什么选择 Nginx

1.Nginx非常轻量

1.功能模块少(源代码仅保留http与核心模块代码,其余不够核心代码会作为插件来安装) 2.代码模块化(易读,便于二次开发,对于开发人员是非常友好)

2.主流公司都选择Nginx

1.大公司都选择Nginx。 2.统一技术工具,降低维护成本,减少故障率。 3.Nginx涉足场景较多,技术更新成本低。

3.Nginx采用Epool网络模型, Apache采用Select模型。

Select: 当用户发起一次请求,select模型就会进行一次遍历扫描,从而导致性能底下。

Epool: 当用户发起请求,epool模型会直接进行处理,效率高效,并无连接限制

Nginx 应用场景

静态处理 反向代理 负载均衡 资源缓存 安全防护 访问限制 访问认证

Nginx Yum安装

Mainline version 开发版 Stable version 稳定版 Legacy version 历史版本

基础环境准备

  //确认系统网络
  [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

安装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 repo
  baseurl=http://nginx.org/packages/centos/7/$basearch/
  gpgcheck=0
  enabled=1

安装Nginx

  //安装Nginx
  [root@Nginx ~]# yum install nginx -y
  
  //查看Nginx当前版本
  [root@Nginx ~]# nginx -v
  nginx version: nginx/1.12.2

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的日志目录

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 设置附加的参数, 链接系统库

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' {
      ...
      }
  }

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)

Nginx上课类容

Nginx配置文件

[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 {                                      # http开始
      include   /etc/nginx/mime.types;    # 包含所有的配置文件
      default_type  application/octet-stream; #

Nginx访问日志及存日志放路径

访问日志存放的路径【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; # 定义错误页面的
    }
  
  }

实例:

部署一个站点:

1.对应的nginx配置文件

  [root@web01conf.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.对应的源代码文件

  [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

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

4.重载Nginx【reload|restart】

  [root@web01 oldboy_code]# #nginx -s reload
  [root@web01 oldboy_code]# systemctl reload nginx

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命令测试域名解析是否正常

赞(1)
未经允许不得转载:劉大帥 » Nginx应用

你的评论可能会一针见血! 抢沙发

登录

找回密码

注册