1、Nginx概述

Nginx是一个开源且高性能、可靠的HTTP中间件、代理服务。

具有高并发(特别是静态资源)、占用系统资源少等特性,且功能丰富而逐渐流行起来。

Nginx不但是一个Web服务软件,还具有反向代理负载均衡功能和缓存服务功能,它类似于LVS负载均衡以及Haproxy专业代理软件,但是Nginx部署起来更为简单、方便;在缓存服务功能方面,它又类似于squid等专业的缓存服务软件

常见的HTTP服务:

  • HTTPD-->Apache基金会
  • IIS ->微软
  • GWS ->Google
  • openrestry
  • tengline ->淘宝基于Nginx开发

Nginx特点:

  • 可针对静态资源高速高并发访问及缓存。

    Nginx在3万并发连接下,开启10个Nginx线程消耗的内存不到200M
  • 可使用反向代理加速,并且可进行数据缓存
  • 具有简单负载均衡、节点健康检查和容错功能
  • 支持FastCGI服务的缓存加速
  • 支持FastCGI、Uwsgi、SCGI、and Memcached Servers的加速和缓存
  • 支持SSL、TLS、SNI

它所具备的其它WWW服务特性:

  • 支持基于名字、端口以及IP的多虚拟主机站点
  • 支持Keep-alive和pipelined连接
  • 简单、方便、灵活的配置和管理
  • 支持平滑重启
  • 可自定义日志
  • 支持rewrite模块
  • 支持限速

正向代理和反向代理的区别:

反向代理:代理外网用户请求内部web服务器

正向代理:代理内部用户访问外网资源

apache与nginx软件对比:

Apache:使用select模型

Nginx:使用epoll 异步网络I/O模型(高并发的服务都是采用epoll)

举例说明:宿舍管理员

1)select模型版管理员:当每个人都去宿舍找人的时候,管理员都会询问你要找谁,然后会带着你一起去找,直到找到为止,人一多根本忙不过来

2)epoll模型版管理员:当每个人都去宿舍找人的时候,管理员会打开名单册根据需要找的人,找到所在的房间然后告诉给你,你自己去找

2、Nginx快速安装

Mainline version 开发版

Stable version 稳定版

Legacy version 历史版本

2.1、源码方式安装Nginx

1.安装Nginx所需的pcre库

Pcre,中文perl语言正则表达式兼容软件包,安装pcre库是为了使Nginx支持具备URI重写的功能的Rewrite模块,企业必装。

采用yum安装pcre

  1. $ yum install pcre pcre-devel -y

2.安装openssl

使nginx支持https功能

  1. $ yum install openssl openssl-devel -y

3、yum安装后检查安装结果

  1. $ rpm -qa pcre pcre-devel openssl openssl-devel
  2. pcre-8.32-17.el7.x86_64
  3. openssl-1.0.2k-19.el7.x86_64
  4. pcre-devel-8.32-17.el7.x86_64
  5. openssl-devel-1.0.2k-19.el7.x86_64

4.创建专门存放工具的目录(养成良好习惯)

  1. $ mkdir -p /server/tools

创建一个管理nginx进程的虚拟用户,用户名www,登录方式为nologin,不创建家目录

  1. $ groupadd www -g 501
  2. $ useradd www -u 501 -g 501 -s /sbin/nologin -M
  3. $ id www

5.下载并解压nginx;wget 后面添加下载地址(-q为不显示安装过程)

  1. $ cd /server/tools/
  2. $ wget http://nginx.org/download/nginx-1.12.2.tar.gz
  3. $ tar vxf nginx-1.12.2.tar.gz

6.进行软件编译安装:

./configure安装相应的软件

  1. $ cd nginx-1.12.2/
  2. $ ./configure --user=www --group=www \
  3. --with-http_ssl_module \
  4. --with-http_stub_status_module \
  5. --with-http_gzip_static_module \
  6. --prefix=/usr/local/nginx-1.12.2
  7. // 编译以及安装二进制文件
  8. $ make && make install
  9. # 编译Nginx软件时,一些 ./configure参数说明:
  10. --prefix=PATH # 设置nginx的安装路径
  11. --user=www # 指定软件worker进程管理用户
  12. --group=www # 指定软件worker进程管理用户组
  13. --with-http_stub_status_module # 用于监控用户访问nginx服务情况
  14. --with-http_ssl_module # 使nginx支持https功能
  15. --with-http_gzip_static_module # 使nginx支持gzip压缩功能

7.为带有版本号的nginx创建软链接

  1. $ ln -s /usr/local/nginx-1.12.2/ /usr/local/nginx

8.将nginx命令加入环境变量

  1. $ vim /etc/profile
  2. export NGINX_PATH=/usr/local/nginx/sbin/
  3. export PATH=$PATH:$NGINX_PATH
  4. $ source /etc/profile

9.启动nginx服务,并且查看端口号(80)

  1. $ nginx
  2. $ ss -lntup | grep "nginx"
  3. tcp LISTEN 0 128 *:80 *:* users:(("nginx",pid=5558,fd=6),("nginx",pid=5557,fd=6))
  4. $ ps -ef | grep "nginx"
  5. root 5557 1 0 17:15 ? 00:00:00 nginx: master process nginx
  6. www 5558 5557 0 17:15 ? 00:00:00 nginx: worker process
  7. # nginx进程解释
  8. master process nginx # 主进程用于保证nginx服务的正常运行
  9. worker process # worker进程用于处理用户请求,直接用户交流,nginx的worker进程是由虚拟用户www管理运行

10.在浏览器输入Web服务器IP地址,如看到以下页面,说明nginx安装成功

2.2、yum方式安装Nginx

文中使用yum方式安装

1.添加repo源

  1. $ vim /etc/yum.repos.d/nginx.repo
  2. [nginx-stable]
  3. name=nginx stable repo
  4. baseurl=http://nginx.org/packages/centos/7/x86_64/
  5. gpgcheck=1
  6. enabled=1
  7. gpgkey=https://nginx.org/keys/nginx_signing.key
  8. module_hotfixes=true

2.yum安装

  1. $ yum install nginx

3.启动nginx

  1. $ nginx

4.浏览器访问nginx,会出现一个默认的html页面

3、Nginx配置文件

Nginx默认配置文件路径:/etc/nginx目录下

1.将nginx默认配置文件去掉注释

  1. $ cp /etc/nginx/nginx.conf{,.default}
  2. $ egrep -v "^$|#" /etc/nginx/nginx.conf.default >/etc/nginx/nginx.conf

2.nginx.conf 配置文件区块说明

  1. mainnginx主区块
  2. eventnginx事件区块
  3. httpnginx http功能区块
  4. servernginx 虚拟主机区块
  5. localtionnginx 匹配后者定位区块

3.nginx配置文件语法格式

  • 大括号要成对出现
  • 每一行指令后面要用分号结尾
  • 每一个指令要放置在指定的区块中

4.nginx配置文件详解:

  1. $ cat nginx.conf
  2. worker_processes 1; # 进程个数,根据硬件调整(默认为1),常用等于CPU的数量
  3. events {
  4. worker_connections 1024;
  5. }
  6. http {
  7. include mime.types; # Nginx支持的媒体类型库文件
  8. default_type application/octet-stream; # 默认的媒体类型
  9. sendfile on; # 开启高效传输模式
  10. keepalive_timeout 65; # 连接超时时间
  11. server { # 第一个Server区块开始,表示一个独立的虚拟主机站点(网站)
  12. listen 80; # 提供服务的端口(默认80)
  13. server_name localhost; # 提供服务的域名主机名
  14. # 第一个location区块开始
  15. location / {
  16. root html; # 站点的根目录,相对于nginx安装目录,该目录可以配置在http或server标签内(默认更目录 nginx/html)
  17. index index.html index.htm; # 默认首页文件,访问时如不指定文件,会优先读该文件
  18. }
  19. error_page 500 502 503 504 /50x.html; # 出现对应的http状态码时,使用50x.html回应客户端
  20. location = /50x.html { # Location区块开始,访问50x.html
  21. root html; # 指定对应的站点目录为html
  22. }
  23. }
  24. # http区块结束
  25. }

4、Nginx核心功能模块

Nginx核心功能模块复制Nginx的全局应用,主要对应主配置文件的Main区块和Events区块区域,这里有很多Nginx必须的全局参数配置,有关核心功能模块的详细信息官方地址为:http://nginx.org/en/docs/

企业场景常用的Nginx http功能模块汇总

Nginx http 功能模块 模块说明
ngx_http_core_module 包括一些核心的http参数配置,对应Nginx的配置为http区块部分
ngx_http_access_module 访问控制模块,用来控制网站用户对Nginx的访问
ngx_http_gzip_module 压缩模块,对Nginx返回的数据压缩,属于性能优化模块
ngx_http_fastcgi_module fastcgi模块,和动态应用相关的模块,例如PHP
ngx_http_proxy_module proxy代理模块
ngx_http_upstream_module 负载均衡模块,可以实现网站的负载均衡功能及节点健康检查
ngx_http_rewrite_module URL地址重写模块
ngx_http_limit_conn_module 限制用户并发连接数及请求数模块
ngx_http_limit_req_module 根据定义的key限制Nginx请求过程的速率
ngx_http_log_module 访问日志模块,以指定的格式记录Nginx客户访问日志等信息
ngx_http_auth_basic_module Web认证模块,设置Web用户通过账号密码访问Nginx
ngx_http_ssl_module ssl模块,用于加密的http连接,如https
ngx_http_stub_status_module 记录Nginx基本访问状态信息等的模块

5、Ningx目录介绍

简单介绍nginx目录结构

  1. $ tree /etc/nginx/
  2. /etc/nginx/
  3. ├── conf.d # nginx配置文件存储目录
  4.    └── default.conf
  5. ├── fastcgi_params # fastcgi的参数文件
  6. ├── koi-utf
  7. ├── koi-win
  8. ├── mime.types # nginx支持的媒体类型
  9. ├── modules -> ../../usr/lib64/nginx/modules # 存放nginx模块
  10. ├── nginx.conf # 这是nginx默认的主配置文件
  11. ├── nginx.conf.default
  12. ├── scgi_params
  13. ├── uwsgi_params # uwsgi相关参数文件,一般用不到
  14. └── win-utf

web架构之Nginx简介(1)的更多相关文章

  1. Web架构之Nginx基础配置

    目录 1.Nginx 虚拟主机 1.1.基于域名的虚拟主机 1.2.基于端口的虚拟主机 1.3.基于IP的虚拟主机 2.Nginx include 3.Nginx 日志配置 3.1.访问日志 3.2. ...

  2. Nginx+Tomcat构建动、静分离WEB架构

    一.简介 二.环境介绍 三.后端服务器安装配置 四.安装论坛 五.安装配置前端Nginx服务器 六.验证服务 一.Tomcat简介 Tomcat是Apache 软件基金会(Apache Softwar ...

  3. nginx高性能WEB服务器系列之一简介及安装

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

  4. 实战Nginx负载均衡高冗余高可用WEB架构

       最近公司主力网站之一改版完成终于上线了,牵扯了我大半年的时间,现在终于有时间坐下来写点东西,总结沉淀一下自己的技术心得.此次,根据服务器的数量和质量,我采用负载均衡高冗余的架构,考虑单点故障,W ...

  5. nginx简介(轻量级开源高并发web服务器:大陆使用者百度、京东、新浪、网易、腾讯、淘宝等)(并发量5w)(一般网站apache够用了,而且稳定)

    nginx简介(轻量级开源高并发web服务器:大陆使用者百度.京东.新浪.网易.腾讯.淘宝等)(并发量5w)(一般网站apache够用了,而且稳定) 一.总结 1.在连接高并发的情况下,Nginx是A ...

  6. [原创]lvs+ospf+nginx实现高可用大流量web架构

    lvs+ospf+nginx实现高可用大流量web架构配置总概述 架构图: 配置如下: .quagga之zebra配置: # cat /etc/quagga/zebra.conf ! ! Zebra ...

  7. Nginx网络架构实战学习笔记(一):Nginx简介、安装、信号控制、nginx虚拟主机配置、日志管理、location 语法、Rewrite语法详解

    文章目录 nginx简介 nginx安装 nginx信号控制 nginx虚拟主机配置 日志管理 location 语法 精准匹配的一般匹配 正则匹配 总结 Rewrite语法详解 nginx简介 Ng ...

  8. 从http简介到网络分层及web架构

    浏览器发起HTTP请求的典型场景 a stateless application-level request/response protocol that uses extensible semant ...

  9. Nginx简介及配置实用

    Nginx简介 Nginx是一个高性能的HTTP和反向代理服务器: 支持的操作系统众多,windows.linux. MacOS X: 可实现负载均衡: Rewrite功能强大: 电商架构大部分都采用 ...

随机推荐

  1. Linux基础常用命令大全学习

    1.ls命令 就是list的缩写,通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录.文件夹.文件权限)查看目录信息等等 常用参数搭配: ls -a 列出目录所有文 ...

  2. 系统学习javaweb1----HTML语言1

    自我感受:HTML语言没想到也有这么大的学问,竟然能通过超链接标签直接访问百度,这可让我大吃一惊,我也得反思一下自己,上学期的java纯是混过来的,没有系统的学习过,感觉能通过期末考试都是侥幸,接下来 ...

  3. T-SQL总结

    先简单说一下 SQL是国际组织订的统一标准,各数据库厂商根据该标准开发自己的数据库及语言 T-SQL就是Microsoft公司的 oracle的是PL/SQL 下面我们主要总结T-SQL: 1.T-S ...

  4. python运行报错——注释报错

    本人是IT行业的,从事软件测试,还是个菜鸟.希望大神们多多关照~ 首先,开通这个博客的目的: 1)通常我容易犯一些低级的错误,而且在网上找到解决方法,解决之后时间长了又不记得: 2)想和有共同兴趣的人 ...

  5. 阿里云系统安装部署Freeswitch

    1.安装vim apt-get install vim 2.修改镜像源 将/etc/apt/source.list的原有源注释掉,添加下面的源: deb http://mirrors.163.com/ ...

  6. try中定义的变量在finally中找不到

    凡是代码块中的变量,作用域都只在代码块中 https://blog.csdn.net/qq_20936333/article/details/81062966 问题: 解决:

  7. python中编码判断

    https://www.cnblogs.com/lc-D-a/p/6074878.html python3 用isinstance()检查unicode编码报错

  8. 吴裕雄--天生自然 R语言开发学习:导入数据

    2.3.6 导入 SPSS 数据 IBM SPSS数据集可以通过foreign包中的函数read.spss()导入到R中,也可以使用Hmisc 包中的spss.get()函数.函数spss.get() ...

  9. 很全很全的 JavaScript 模块讲解

    模块通常是指编程语言所提供的代码组织机制,利用此机制可将程序拆解为独立且通用的代码单元.所谓模块化主要是解决代码分割.作用域隔离.模块之间的依赖管理以及发布到生产环境时的自动化打包与处理等多个方面. ...

  10. 吴裕雄--天生自然 人工智能机器学习实战代码:线性判断分析LINEARDISCRIMINANTANALYSIS

    import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from mpl_toolkits.mplot ...