• Nginx


    Nginx基本简述

    Nginx软件介绍

    Nginx是一个开源且高性能、可靠的HttpWeb服务、代理服务。
    开源: 直接获取源代码
    高性能: 支持海量并发
    可靠: 服务稳定
    如果你听说或使用过 Apache软件,那么很快就会熟悉 Nginx软件,与 Apache软件类似, Nginx ( “engme x")是一个开源的,支持高性能、高并发的 WWW服务器和代理服务软件。
    它是由俄罗斯人 Igor Sysoev开发的,最初被应用在勘罗斯的大型网站 www.rambler.ru 上,后来作者将源代码以类BSD许可证的形式开源出来供全球使用。
    Nginx因具有高并发(特别是静态资源)占用系统资源少等特性,且功能丰富而逐渐流行起来。
    在功能应用发面,Nginx不但是一个优秀的Web服务软件,还具有反向代理负载均衡功能和缓存服务功能。在反向代理负载均衡功能方面,它类似于大名鼎鼎的LVS负载均衡及Haproxy等专业代理软件,但是Nginx部署起来更为简单、方便;在缓存服务功能方面,它又类似于Squid等专业的缓存服务软件。
    Nginx 可以运行在 UNIX、Linux、BSD、Mac 0S X、Solaris,以及 Microsoft Windows 等操作系统中。随着Nginx在国内很多大型网站中的稳定高效运行,近两年它也逐渐被越来越多的中小型网站所使用。当前流行的Nginx Web组合被称为LNMP或LEMP(即Linux Nginx MySQL PHP),其中 LNMP 里的 N 取自Nginx ( "engine x" )
    Nginx 的官方介绍见 http://nginx.org/en

    常见的 HTTP Web服务

    Httpd 由Apache基金会
    IIS 微软服务器版
    GWS Google开发
    Openrestry 基于nginx+lua
    Tengline 淘宝基于Nginx开发

    Nginx服务企业应用

    常用来提供静态服务的软件
      Apache :这是中小型Web服务的主流,Web服务器中的老大哥,
      Nginx :大型网站Web服务的主流,曾经Web服务器中的初生牛犊,现已长大。
      Nginx 的分支 Tengine ( http://tengine.taobao.org/)目前也在飞速发展•
    Lighttpd :这是一个不溫不火的优秀 Web软件,社区不活跃,静态解析效率很高.在 Nginx 流行前,它是大并发静态业务的首选,国内百度贴吧、豆瓣等众多网站都有Lighttpd奋斗的身彩"  
    常用来提供动态服务的软件
    * PHP ( FastCGI ):大中小型网站都会使用,动态网页语言PHP程序的解析容器。它可配合Apache解析动态程序,不过,这里的PHP不是FastCGI守护进程横式,而是mod_php5.so ( module)也可配合Nginx解析动态程序,此时的PHP常用FastCGI守护进程模式提供服务。
    * Tomcat :中小企业动态Web服务主流,互联网Java容器主流(如jsp、do )
    * Resin :大型动态Web服务主流,互联网Java容器主流(如jsp、do )
    * IIS ( Internet information services ):微软 windows 下的 Web 服务软件(如 asp、aspx )

    为什么选择 Nginx

    1.Nginx非常轻量
    1.功能模块少(源代码仅保留http与核心模块代码,其余不够核心代码会作为插件来安装)
    2.代码模块化(易读,便于二次开发,对于开发人员是非常友好)
    2.互联网公司都选择Nginx
    1.技术成熟, 大公司都选择Nginx
    2.统一技术选型工具, 降低维护成本,减少故障几率。
    3.Nginx涉足场景较多,技术更新成本低。
    3.Nginx采用Epoll网络模型, Apache采用Select模型。
    Select: 当用户发起一次请求,select模型就会进行一次遍历扫描,从而导致性能低下。
    Epoll: 当用户发起请求,epoll模型会直接进行处理,效率高效,并无连接限制。

    Nginx 软件特性

    HTTP服务器的特色及优点:
    支持高并发:能支持几万并发连接(特别是静态小文件业务环境)
    资源消耗少:在3万并发连接下,开启10个Nginx线程消耗的内存不到200MB
    可以做HTTP反向代理及加速缓存、即负载均衡功能,内置对RS节点服务器健康检查功能,这相当于专业的Haproxy软件或LVS的功能。
    具备Squid等专业缓存软件等的缓存功能。
    支持异步网络I/O事件横型epoll(Linux2.6+)
    nginx功能特性
    web网站服务
    反向代理负载均衡(nginx /lvs /haproxy)
    nginx缓存服务(memcache /redis /mongodb)

    Nginx 应用场景

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

    Nginx安装与部署

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

    关于Nginx的安装方法

    epel仓库=>Nginx(1.版本低 2.配置文件不一样)
    源码编译=>Nginx(1.复杂   2.企业不使用)
    官方仓库=>Nginx)(√1.版本较新 2.安装简单 3.配置不复杂)

    关于编译安装

    编译参数越多越好,还是越少越好?
    源码编译好了,做成的rpm包

    越少:功能少,后期可维护性差
    越多:功能全,覆盖广,可维护性强

    Nginx安装步骤

    基础环境准备

    #确认系统网络
    [root@Nginx ~]# ping baidu.com
    #关闭firewalld
    [root@Nginx ~]# systemctl stop firewalld
    [root@Nginx ~]# systemctl disable firewalld
    #临时关闭selinux
    [root@Nginx ~]# setenforce 0
    

    配置Nginx官方仓库

    [root@web01 ~]# vim /etc/yum.repos.d/nginx.repo   
    #路径不能变  必须以repo结尾 为了便于管理所以使用nginx.reop
    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/7/$basearch/
    gpgcheck=0
    enabled=1
    

    安装nginx

    nginx -V查看nginx编译的参数
    nginx -v 检查版本信息
    一定确认是通过官方的仓库安装上  不加-y  可以查看软件下载的地址
    #安装Nginx
    [root@Nginx ~]# yum install nginx 
    #查看Nginx当前版本
    [root@Nginx ~]# nginx -v
    nginx version: nginx/1.14.0
    

    部署站点

    对应的nginx配置文件

    [root@web01 conf.d]# cat /etc/nginx/conf.d/nfsnobody_game.conf 
    server {
    listen 80;
    server_name game.nfsnobody.com;
    
    location / {
    root /nfsnobody_code;
    index index.html;
    }
    }
    

    对应的源代码文件

    部署对应的源代码文件【手动-太low】

    [root@web01 conf.d]# mkdir /nfsnobody_code
    [root@web01 conf.d]# cd /nfsnobody_code/
    [root@web01 nfsnobody_code]# rz  html5.zip
    [root@web01 nfsnobody_code]# unzip html5.zip
    [root@web01 nfsnobody_code]# pwd
    /nfsnobody_code
    [root@web01 nfsnobody_code]# ls
    ceshi  game  html5.zip  img  index.html  readme.txt
    

    检查nginx的语法

    [root@web01 nfsnobody_code]# nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    

    重载Nginx

    reload或者restart
    [root@web01 nfsnobody_code]# #nginx -s reload
    [root@web01 nfsnobody_code]# systemctl reload nginx
    

    如何访问:

    通过服务器的IP直接访问:10.0.0.7
    通过域名方式访问
      Windows:   C:WindowsSystem32driversetchosts 文件
      Mac:       sudo vim /etc/hosts
      10.0.0.7   game.nfsnobody.com
    使用ping命令测试域名解析是否正常
    

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

    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是一个纯文本类型的文件,整个配置文件是以区块的形式组织的。一般,每个区块以一对大括号{}来表示开始与结束。
    CoreModule 核心模块
    EventModule 事件驱动模块
    HttpCoreModule http内核模块
    需了解扩展项
    CoreModule层下可以有Event、HTTP
    HTTP模块层允许有多个Server层, Server主要用于配置多个网站
    Server层又允许有多个Location, Location主要用于定义网站访问路径

    nginx.conf配置文件详解

    [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 epoll;                              # 事件使用的模型(默认epoll)
    }                                           # 事件模块结束
    
    http {                                      # http开始
        include       /etc/nginx/mime.types;    # 包含
        default_type  application/octet-stream; #
    
        # 定义日志的格式
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        # 访问日志存放的路径【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; # 定义错误页面的
        }
    }
    

    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{}
    http {  //http层开始
    ...    
        //使用Server配置网站, 每个Server{}代表一个网站(简称虚拟主机)
        'server' {
            listen       80;        //监听端口, 默认80
            server_name  localhost; //提供服务的域名或主机名
            access_log host.access.log  //访问日志
            //控制网站访问路径
            'location' / {
                root   /usr/share/nginx/html;   //存放网站代码路径
                index  index.html index.htm;    //服务器返回的默认页面文件
            }
            //指定错误代码, 统一定义错误页面, 错误代码重定向到新的Locaiton
            error_page   500 502 503 504  /50x.html;
        }
        ...
        //第二个虚拟主机配置
        'server' {
        ...
        }  
    
        include /etc/nginx/conf.d/*.conf;  //包含/etc/nginx/conf.d/目录下所有以.conf结尾的文件
    
    }   //http层结束
    
    
    
  • 相关阅读:
    VMware中安装Ubuntu后,安装VMwareTools提示“Not enough free space to extract VMwareTools-10.3.10-13959562.tar.gz”的解决办法
    XShell下便捷上载/下载文件到虚拟机
    无法获取 vmci 驱动程序版本: 句柄无效。 驱动程序 vmci.sys 版本不正确。请尝试重新安装 VMware Workstation。 打开模块DevicePowerOn电源失败。
    VMware Workstation pro无法在Windows上运行,检查可在Windows上运行的此应用的更新版本
    mybatisplus运行时修改@TableName注解的schema值
    easyexcel不创建对象导出图片
    鸿蒙(HarmonyOS)开发笔记四:项目结构
    鸿蒙(HarmonyOS)开发笔记三:核心概念
    鸿蒙(HarmonyOS)开发笔记二:使用DevEco Studio创建一个项目
    鸿蒙(HarmonyOS)开发笔记一:系统简介
  • 原文地址:https://www.cnblogs.com/wenrulaogou/p/12082706.html
Copyright © 2020-2023  润新知