Nginx的定义:
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
先来弄懂几个定义:
什么是反向代理?什么是正向代理?
反向代理隐藏真实服务器,正向代理隐藏真实客户端。
代理的关键,就是隐藏(类比于房屋代理,各种代理商,都是在买家与卖家之间的一层隔离,买家看不到真正的卖家,好像是在与代理直接做交易),隐藏真实的发出网络请求的一方。
我们常说的代理都是正向代理,正向代理隐藏真实的客户端,由代理服务器代替客户端统一向服务器发送请求,服务器不知道真实的客户端是谁,服务器只能看到客户端的代理服务器;
正向代理的典型应用是为在局域网内的客户端提供访问Internet的途径。
反向代理隐藏的是服务端,www.baidu.com就是一个反向代理服务器,我们向baidu发送请求,只需要知道反向代理服务器的IP地址即可,而它后面隐藏了成千上万台真实的服务器。
常见的服务器分为 web服务器、应用服务器。
Nginx、Apache是Web 服务器,Tomcat是应用服务器。
把它们的名字展开更好理解:
Web HTTP Server, Web Application Server。
如果你把web称为“Web应用”,那么处理web业务的服务器就是“web应用服务器”,用于处理业务逻辑;
而 “web服务器”则主要是让客户端通过浏览器进行访问,处理HTTP连接,所以是“Web HTTP Server”。
web服务器的重量级、轻量级指的是什么?
一句话概括二者区别:
轻量级,就是在同等并发量时占用更少的内存和资源。
之所以 Apache是重量级服务器,而Nginx是轻量级服务器,是因为:
Apache使用的是传统的select网络IO模型,同步多线程,一个连接对应一个进程;
Nginx使用的是现代的epoll、kqueue网络IO模型,一个线程可以处理多个连接。
简而言之,静态资源不需要去访问后端数据库,直接返回前端固定页面即可,访问效率高,但内容固定;动态资源需要访问后端数据库。
静态资源:
可以理解为前端的固定页面,这里面包含HTML、CSS、JS、图片等等,不需要查数据库也不需要程序处理,直接就能够显示的页面,如果想修改内容则必须修改页面,但是访问效率相当高。
动态资源:
需要程序处理或者从数据库中读数据,能够根据不同的条件在页面显示不同的数据,内容更新不需要修改页面但是访问速度不及静态页面。
Nginx: 负载均衡、反向代理、处理静态文件(速度高于Apache三倍以上);
Apache: 相对于Tomcat处理静态文件是它的优势;
Tomcat: 处理动态文件的HTTP请求;
真实开发中,一般采用的架构是 Nginx + Tomcat。
Linux 2.6以上内核
(支持 epoll)、GCC编译器
(编译 Nginx 源码)、PCRE库
(支持 nginx.conf 配置文件中使用的正则表达式)、zlib库
(服务器给客户端发送 HTTP 数据时进行压缩)、OpenSSL
(支持 HTTPS 安全传输)。
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
下载、解压Nginx源码后:
./configure
make
make install
./configure做了大量的幕后工作,包括检测操作系统内核和已安装的软件、解析参数、生成中间目录、根据各种参数生成C源文件、生成Makefile文件;
make 命令编译上一步生成的Makefile文件,生成目标文件、二进制文件;
make install 命令根据第一步configure中的参数将Nginx部署起来。
//启动:
cd /usr/local/sbin
./nginx
//关闭:
./nginx -s stop
或者
./nginx -s quit
参考链接:
反向代理为何叫反向代理
浅谈Tomcat、Apache、Nginx的区别及优缺点
死磕Nginx系列 – Nginx入门
动态资源和静态资源区别