Nginx学习笔记系列第一篇-Nginx基础知识

280 阅读4分钟

这是我参与更文挑战的第19天,活动详情查看: 更文挑战

背景

之前一个项目用到了Nginx的一些高级功能,做了一些笔记,下面准备把这个系列整理一下.

Nginx

正向代理和反向代理

正向代理

  • 正向代理服务器是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理服务器发送一个请求并指定目标(原始服务器),然后代理向原始服务器转发请求并将获得的内容返回给客户端
  • 平时反问国外网站的代理服务器都是使用的正向代理
  • 正向代理的特点就是用户明确知道要访问哪个网站

反向代理

  • 反向代理是以代理服务器身份来接受外部的请求,然后将请求转发给内部网络上的数据服务器,并将从数据服务器上得到的请求结果返回给请求的客户端
  • 反向代理的特点是在向代理服务器发送请求时,客户端并不知道最终获取的数据是由哪个数据服务器提供的

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

  1. 代理对象不同
  • 正向代理,代理客户端,服务端不知道实际发起请求的客户端
  • 反向代理,代理服务端,客户端不知道实际提供服务的服务端
  1. 正向代理的应用场景
  • 访问原来无法访问的资源
  • 用作缓存,加速访问速度
  • 对客户端访问授权,上网进行认证
  • 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
  1. 反向代理的应用场景
  • 保护内网安全
  • 负载均衡
  • 缓存,减少服务器的压力

Nginx简介

  • Nginx是一款轻量级的HTTP服务器和反向代理服务器及电子邮件(IMAP/POP3)代理服务器
  • Nginx占用内存少,并发能力强
  • Nginx以事件驱动的方式编写,有非常好的性能
  • Nginx是一个非常高效的反向代理、负载平衡
  • Nginx因为它的稳定性、丰富的模块库、灵活的配置和低系统资源的消耗而闻名
  • Nginx响应静态页面的速度非常快
  • 对proxy和rewrite模块的支持很彻底,还支持mod_fcgi,ssl,vhosts

Nginx特点

Nginx做为HTTP服务器,有以下几项基本特性:

  • 处理静态文件,索引文件以及自动索引;打开文件描述符缓冲
  • 无缓存的反向代理加速,简单的负载均衡和容错
  • FastCGI,简单的负载均衡和容错
  • 模块化的结构:包括gzipping,byte ranges,chunked responses,以及SSI-filter等filter;如果由FastCGI或其它代理服务器处理单页中存在的多个SSI,则这项处理可以并行运行,而不需要相互等待
  • 支持SSL和TLSSNI
  • Nginx专为性能优化而开发,它支持内核Poll模型,有报告表明能支持高达50000个并发连接数
  • Nginx具有很高的稳定性,Nginx采取了分阶段资源分配技术,使得它的CPU与内存占用率非常低,Nginx官方表示保持 10000个没有活动的连接,它只占2.5M内存
  • Nginx支持热部署,能够在不间断服务的情况下,对业务应用进行升级
  • Nginx采用master-slave模型,能够充分利用SMP的优势,且能够减少工作进程在磁盘I/O的阻塞延迟,当采用select()/poll()调用时,还可以限制每个进程的连接数
  • Nginx模块扩展很容易,特别是强大的Upstream与Filter链,Upstream为诸如reverse proxy,与其他服务器通信模块的编写奠定了很好的基础;而Filter链可以把前一个filter的输出做为当前filter的输入,类似Unix的管线

nginx常用命令

启动Nginx

nginx

立刻停止Nginx服务

nginx -s stop

重新加载配置文件

nginx -s reload

平滑停止Nginx服务

nginx -s quit

测试配置文件是否正确

nginx -t

显示Nginx版本信息

nginx -v

显示Nginx版本信息,编译器和配置参数的信息

nginx -V

Nginx运行模式

  • Nginx在Unix系统中启动后会以daemon方式在后台运行,后台进程包含一个master进程和多个worker进程
  • 可以手动地关掉Nginx后台模式,让Nginx在前台运行,并且通过配置取消Nginx的master进程,从而使Nginx以单进程方式运行;关闭后台模式一般用于调试,生产环境不会这么做
  • Nginx默认以多进程方式工作,但也支持多线程方式工作,目前主流的还是多进程方式