web架构之Nginx简介(1)
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
$ yum install pcre pcre-devel -y
2.安装openssl
使nginx支持https功能
$ yum install openssl openssl-devel -y
3、yum安装后检查安装结果
$ rpm -qa pcre pcre-devel openssl openssl-devel
pcre-8.32-17.el7.x86_64
openssl-1.0.2k-19.el7.x86_64
pcre-devel-8.32-17.el7.x86_64
openssl-devel-1.0.2k-19.el7.x86_64
4.创建专门存放工具的目录(养成良好习惯)
$ mkdir -p /server/tools
创建一个管理nginx进程的虚拟用户,用户名www,登录方式为nologin,不创建家目录
$ groupadd www -g 501
$ useradd www -u 501 -g 501 -s /sbin/nologin -M
$ id www
5.下载并解压nginx;wget 后面添加下载地址(-q为不显示安装过程)
$ cd /server/tools/
$ wget http://nginx.org/download/nginx-1.12.2.tar.gz
$ tar vxf nginx-1.12.2.tar.gz
6.进行软件编译安装:
./configure安装相应的软件
$ cd nginx-1.12.2/
$ ./configure --user=www --group=www \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--prefix=/usr/local/nginx-1.12.2
// 编译以及安装二进制文件
$ make && make install
# 编译Nginx软件时,一些 ./configure参数说明:
--prefix=PATH # 设置nginx的安装路径
--user=www # 指定软件worker进程管理用户
--group=www # 指定软件worker进程管理用户组
--with-http_stub_status_module # 用于监控用户访问nginx服务情况
--with-http_ssl_module # 使nginx支持https功能
--with-http_gzip_static_module # 使nginx支持gzip压缩功能
7.为带有版本号的nginx创建软链接
$ ln -s /usr/local/nginx-1.12.2/ /usr/local/nginx
8.将nginx命令加入环境变量
$ vim /etc/profile
export NGINX_PATH=/usr/local/nginx/sbin/
export PATH=$PATH:$NGINX_PATH
$ source /etc/profile
9.启动nginx服务,并且查看端口号(80)
$ nginx
$ ss -lntup | grep "nginx"
tcp LISTEN 0 128 *:80 *:* users:(("nginx",pid=5558,fd=6),("nginx",pid=5557,fd=6))
$ ps -ef | grep "nginx"
root 5557 1 0 17:15 ? 00:00:00 nginx: master process nginx
www 5558 5557 0 17:15 ? 00:00:00 nginx: worker process
# nginx进程解释
master process nginx # 主进程用于保证nginx服务的正常运行
worker process # worker进程用于处理用户请求,直接用户交流,nginx的worker进程是由虚拟用户www管理运行
10.在浏览器输入Web服务器IP地址
,如看到以下页面,说明nginx安装成功
2.2、yum方式安装Nginx
文中使用yum方式安装
1.添加repo源
$ vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
2.yum安装
$ yum install nginx
3.启动nginx
$ nginx
4.浏览器访问nginx,会出现一个默认的html页面
3、Nginx配置文件
Nginx默认配置文件路径:/etc/nginx目录下
1.将nginx默认配置文件去掉注释
$ cp /etc/nginx/nginx.conf{,.default}
$ egrep -v "^$|#" /etc/nginx/nginx.conf.default >/etc/nginx/nginx.conf
2.nginx.conf 配置文件区块说明
main:nginx主区块
event:nginx事件区块
http:nginx http功能区块
server:nginx 虚拟主机区块
localtion:nginx 匹配后者定位区块
3.nginx配置文件语法格式
- 大括号要成对出现
- 每一行指令后面要用分号结尾
- 每一个指令要放置在指定的区块中
4.nginx配置文件详解:
$ cat nginx.conf
worker_processes 1; # 进程个数,根据硬件调整(默认为1),常用等于CPU的数量
events {
worker_connections 1024;
}
http {
include mime.types; # Nginx支持的媒体类型库文件
default_type application/octet-stream; # 默认的媒体类型
sendfile on; # 开启高效传输模式
keepalive_timeout 65; # 连接超时时间
server { # 第一个Server区块开始,表示一个独立的虚拟主机站点(网站)
listen 80; # 提供服务的端口(默认80)
server_name localhost; # 提供服务的域名主机名
# 第一个location区块开始
location / {
root html; # 站点的根目录,相对于nginx安装目录,该目录可以配置在http或server标签内(默认更目录 nginx/html)
index index.html index.htm; # 默认首页文件,访问时如不指定文件,会优先读该文件
}
error_page 500 502 503 504 /50x.html; # 出现对应的http状态码时,使用50x.html回应客户端
location = /50x.html { # Location区块开始,访问50x.html
root html; # 指定对应的站点目录为html
}
}
# http区块结束
}
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目录结构
$ tree /etc/nginx/
/etc/nginx/
├── conf.d # nginx配置文件存储目录
│ └── default.conf
├── fastcgi_params # fastcgi的参数文件
├── koi-utf
├── koi-win
├── mime.types # nginx支持的媒体类型
├── modules -> ../../usr/lib64/nginx/modules # 存放nginx模块
├── nginx.conf # 这是nginx默认的主配置文件
├── nginx.conf.default
├── scgi_params
├── uwsgi_params # uwsgi相关参数文件,一般用不到
└── win-utf
web架构之Nginx简介(1)的更多相关文章
- Web架构之Nginx基础配置
目录 1.Nginx 虚拟主机 1.1.基于域名的虚拟主机 1.2.基于端口的虚拟主机 1.3.基于IP的虚拟主机 2.Nginx include 3.Nginx 日志配置 3.1.访问日志 3.2. ...
- Nginx+Tomcat构建动、静分离WEB架构
一.简介 二.环境介绍 三.后端服务器安装配置 四.安装论坛 五.安装配置前端Nginx服务器 六.验证服务 一.Tomcat简介 Tomcat是Apache 软件基金会(Apache Softwar ...
- nginx高性能WEB服务器系列之一简介及安装
nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...
- 实战Nginx负载均衡高冗余高可用WEB架构
最近公司主力网站之一改版完成终于上线了,牵扯了我大半年的时间,现在终于有时间坐下来写点东西,总结沉淀一下自己的技术心得.此次,根据服务器的数量和质量,我采用负载均衡高冗余的架构,考虑单点故障,W ...
- nginx简介(轻量级开源高并发web服务器:大陆使用者百度、京东、新浪、网易、腾讯、淘宝等)(并发量5w)(一般网站apache够用了,而且稳定)
nginx简介(轻量级开源高并发web服务器:大陆使用者百度.京东.新浪.网易.腾讯.淘宝等)(并发量5w)(一般网站apache够用了,而且稳定) 一.总结 1.在连接高并发的情况下,Nginx是A ...
- [原创]lvs+ospf+nginx实现高可用大流量web架构
lvs+ospf+nginx实现高可用大流量web架构配置总概述 架构图: 配置如下: .quagga之zebra配置: # cat /etc/quagga/zebra.conf ! ! Zebra ...
- Nginx网络架构实战学习笔记(一):Nginx简介、安装、信号控制、nginx虚拟主机配置、日志管理、location 语法、Rewrite语法详解
文章目录 nginx简介 nginx安装 nginx信号控制 nginx虚拟主机配置 日志管理 location 语法 精准匹配的一般匹配 正则匹配 总结 Rewrite语法详解 nginx简介 Ng ...
- 从http简介到网络分层及web架构
浏览器发起HTTP请求的典型场景 a stateless application-level request/response protocol that uses extensible semant ...
- Nginx简介及配置实用
Nginx简介 Nginx是一个高性能的HTTP和反向代理服务器: 支持的操作系统众多,windows.linux. MacOS X: 可实现负载均衡: Rewrite功能强大: 电商架构大部分都采用 ...
随机推荐
- Robustness|Variability|Diversification|Complexity|自组装|
生命组学 进化方向有以下四个特性:Robustness:变稳定,比如杀虫剂最大浓度也有杀不死的虫子.Variability易变性与Diversification多样性,容易变多和变多.Complexi ...
- ORs-6-Olfactory Bulb Ratio, ORs Gene Repertoire, and Olfactory Ability
Olfactory Bulb Ratio, ORs Gene Repertoire, and Olfactory Ability 1.Olfactory Bulb的生物学意义:a.生存 b.嗅觉能力 ...
- python中字母与ASCII码之间的转换以及进制间的转换
字母与ascii码: ord(c):参数是长度为1的字符串,简称字符.当参数为统一对象时(unicode object),返回能代表该字符的统一编码,当参数为8比特的字符串时,返回该字节的值.例如,o ...
- django的引入安装
一 django引入 1 web应用介绍 1 什么是web应用 Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件 ...
- FPGA基础架构总结
1.为什么FPGA的整体逻辑的速度有限制? 与ASIC相比较,AS指的是(application specific)专用集成应用,而FPGA是可编程逻辑,在实现的过程中,AS是直接用最基础的逻辑门实现 ...
- WPF中,如何屏蔽WebBrowser弹出的脚本错误窗口?
WPF没有自带屏蔽这些窗口的方法或属性,可以使用反射的方法来屏蔽弹出脚本错误窗口: public void SuppressScriptErrors(WebBrowser wb, bool Hide) ...
- mac android sdk manager 无法更新(被墙)
http://www.androiddevtools.cn/ 一句话,相见恨晚!! 想把以前的旧安卓项目拿到MAC上 环境就卡住了,以前的包是4.4的,想试试5.0的,更新不动 Android Too ...
- LG_3457_[POI2007]POW-The Flood
题目描述 Description 你手头有一张该市的地图.这张地图是边长为 m∗n 的矩形,被划分为m∗n个1∗1的小正方形.对于每个小正方形,地图上已经标注了它的海拔高度以及它是否是该市的一个组成部 ...
- Mybatis工作流程及其原理与解析
Mybatis简介: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBat ...
- supervised learning|unsupervised learning
监督学习即是supervised learning,原始数据中有每个数据有自己的数据结构同时有标签,用于classify,机器learn的是判定规则,通过已成熟的数据training model达到判 ...