Nginx初步(反向代理/Web服务器/轻量级)

一、Nginx是什么:

Nginx的定义:

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。

先来弄懂几个定义:

(1)反向代理:

什么是反向代理?什么是正向代理?
反向代理隐藏真实服务器,正向代理隐藏真实客户端。

代理的关键,就是隐藏(类比于房屋代理,各种代理商,都是在买家与卖家之间的一层隔离,买家看不到真正的卖家,好像是在与代理直接做交易),隐藏真实的发出网络请求的一方。

我们常说的代理都是正向代理,正向代理隐藏真实的客户端,由代理服务器代替客户端统一向服务器发送请求,服务器不知道真实的客户端是谁,服务器只能看到客户端的代理服务器;
正向代理的典型应用是为在局域网内的客户端提供访问Internet的途径。

反向代理隐藏的是服务端,www.baidu.com就是一个反向代理服务器,我们向baidu发送请求,只需要知道反向代理服务器的IP地址即可,而它后面隐藏了成千上万台真实的服务器。

(2) web服务器:

常见的服务器分为 web服务器、应用服务器。

Nginx、Apache是Web 服务器,Tomcat是应用服务器。

把它们的名字展开更好理解:

Web HTTP Server, Web Application Server。

如果你把web称为“Web应用”,那么处理web业务的服务器就是“web应用服务器”,用于处理业务逻辑;

而 “web服务器”则主要是让客户端通过浏览器进行访问,处理HTTP连接,所以是“Web HTTP Server”。

(3)轻量级:

web服务器的重量级、轻量级指的是什么?

一句话概括二者区别:

轻量级,就是在同等并发量时占用更少的内存和资源。

之所以 Apache是重量级服务器,而Nginx是轻量级服务器,是因为:

Apache使用的是传统的select网络IO模型,同步多线程,一个连接对应一个进程;

Nginx使用的是现代的epoll、kqueue网络IO模型,一个线程可以处理多个连接。

(4)静态资源、动态资源:

简而言之,静态资源不需要去访问后端数据库,直接返回前端固定页面即可,访问效率高,但内容固定;动态资源需要访问后端数据库。

静态资源:

可以理解为前端的固定页面,这里面包含HTML、CSS、JS、图片等等,不需要查数据库也不需要程序处理,直接就能够显示的页面,如果想修改内容则必须修改页面,但是访问效率相当高。

动态资源:

需要程序处理或者从数据库中读数据,能够根据不同的条件在页面显示不同的数据,内容更新不需要修改页面但是访问速度不及静态页面。

(5)Apache、Nginx、Tomcat 比较:

Nginx: 负载均衡、反向代理、处理静态文件(速度高于Apache三倍以上);

Apache: 相对于Tomcat处理静态文件是它的优势;

Tomcat: 处理动态文件的HTTP请求;

真实开发中,一般采用的架构是 Nginx + Tomcat。

  • Nginx处理高并发的HTTP请求时性能有多优秀:
    (1)高并发:Nginx单机支持10W以上的连接,支持上限取决于内存,10W远未封顶;
    (2)低内存消耗:1W个非活跃的HTTP Keep-Alive连接在Nginx中仅消耗2.5M内存,这是Nginx支持高并发的基础。

2. Nginx的安装:

(1)准备工作:

Linux 2.6以上内核(支持 epoll)、GCC编译器(编译 Nginx 源码)、PCRE库(支持 nginx.conf 配置文件中使用的正则表达式)、zlib库(服务器给客户端发送 HTTP 数据时进行压缩)、OpenSSL(支持 HTTPS 安全传输)。

(2)Linux内核参数优化:

fs.file-max = 999999
net.ipv4.tw_reuse = 1  
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_fin_timeout
net.ipv4.tcp_tw_buckets = 5000
net.ipv4.tcp_max_syn_backlog
net.ipv4.ip_local_port_range = 1024 61000
net.ipv4.tcp_rmem = 4096 32768 262142
net.ipv4.tcp_wmem = 4096 32768 262142
net.ipv4.netdev_max_backlog
net.ipv4.rmem_default
net.ipv4.wmem_default
net.ipv4.rmem_max
net.ipv4.wmem_max
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn.backlog

(3)编译安装:

下载、解压Nginx源码后:

./configure 
make
make install

./configure做了大量的幕后工作,包括检测操作系统内核和已安装的软件、解析参数、生成中间目录、根据各种参数生成C源文件、生成Makefile文件;

make 命令编译上一步生成的Makefile文件,生成目标文件、二进制文件;

make install 命令根据第一步configure中的参数将Nginx部署起来。

(4)启动与关闭Nginx:

//启动:
cd /usr/local/sbin
./nginx

//关闭:
./nginx -s stop
或者
./nginx -s quit


参考链接:

反向代理为何叫反向代理
浅谈Tomcat、Apache、Nginx的区别及优缺点
死磕Nginx系列 – Nginx入门
动态资源和静态资源区别

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页