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

安装nginx

nginx -V查看nginx编译的参数nginx -v 检查版本信息一定确认是通过官方的仓库安装上  不加-y  可以查看软件下载的地址#安装Nginx[root@Nginx ~]# yum install nginx #查看Nginx当前版本[root@Nginx ~]# nginx -vnginx 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]# lsceshi  game  html5.zip  img  index.html  readme.txt

检查nginx的语法

[root@web01 nfsnobody_code]# nginx -tnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: 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:\Windows\System32\drivers\etc\hosts 文件  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进程运行的pidevents {                                    # 事件模块开始    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层结束
(0)

相关推荐

  • Linux常用命令整理

    目录提取码 一.基本命令 1.1 关机和重启 1.2 帮助命令 二.目录操作命令 2.3.1 创建目录[增] mkdir 2.3.2 删除目录或文件[删]rm 2.3.3 目录修改[改]mv 和 cp ...

  • 十二、Docker部署nginx并挂载本地目录到镜像

    拉取nginx docker pull nginx:1.18 准备工作 问题:拉取nginx并运行为容器后,如果想要修改,那么就需要进入容器,这样很麻烦. 解决:因此,要将配置文件挂载出来.使用doc ...

  • docker学习8-搭建nginx环境

    前言 使用 docker 搭建 nginx 环境 下载镜像 使用docker pull 拉取最新的 nginx 镜像 [root@yoyo ~]# docker pull nginx Using de ...

  • 通过nginx的方式,解决web访问慢的问题

    通过nginx的方式,解决web访问慢的问题 博客上线后发现图片.静态文件增多后,访问起来速度越来越慢,所以把不经常更新的文件,比如css.js和图片等.减少HTTP请求是优化网站的最佳方案之一,我们 ...

  • Nginx的进程管理与重载原理

    进程结构图 Nginx是多进程结构,多进程结构设计是为了保证Nginx的高可用高可靠,包含: master进程:父进程,负责worker进程的管理 worker进程:子进程,worker进程一般配置与 ...

  • Nginx 这个功能厉害了!

    原文:https://reurl.cc/GdO5Kx 作者:废物大师兄 1. 需求 将生产环境的流量拷贝到预上线环境或测试环境,这样做有很多好处,比如: 可以验证功能是否正常,以及服务的性能: 用真实 ...

  • Nginx 开启gzip压缩,减轻服务器压力

    Nginx 开启gzip压缩,减轻服务器压力 优化服务器的方案有很多种.常用的是缓存静态文件和开启gzip,还有cdn加速.使用cache缓存数据,本次主要根据自身的网站.采取的优化方案. 首先.Vi ...

  • 惊呆,这样操作 Nginx 并发数就能达到3w?

    Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名.本文从底层原理分析 Nginx 为什么这么快! Nginx 的进程模型 Nginx 服务器,正常运行过程中: 多进程:一个 M ...

  • Nginx总结(一)一步一步教你如何安装Nginx

    以前写过一些Nginx的文章,但都是用到什么说什么,没有一个完整系统的总结.趁最近有时间,打算将Nginx相关的内容重新整理一下.nginx系列文章地址如下: https://www.cnblogs. ...

  • Nginx学习

    什么是nginx? Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行.其特点是占有内存少,并发能力强,事实上nginx的 ...

  • Nginx特性

    NGINX有什么不同? NGINX使用可扩展的事件驱动架构,而不是更传统的过程驱动架构. 这需要更低的内存占用,并且当并发连接扩大时,使内存使用更可预测. 在传统的Web服务器体系结构中,每个客户端连 ...

  • 如何配置Nginx压缩实现性能优化?怎么学Linux系统

    如何配置Nginx gzip压缩实现性能优化?是每个Linux运维管理人员都需要掌握的技能.互联网时代发展迅速,Linux运维技术的需求更多推进不少.市场对于Linux运维人才的需求也在逐渐加大.Li ...

  • Nginx expires功能缺点如何解决?怎样学linux编程

    Nginx expires功能缺点如何解决?几乎所有的事物都是有两面性,没有十全十美的人和事.Nginx expires功能也不例外,虽然这个功能很好,但是也会给企业带来一些困惑.那么Nginx ex ...