Nginx
- 推荐书籍: Nginx开发从入门到精通
Nginx简介
Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好
Nginx 作为 web 服务器
Nginx 可以作为静态页面的 web 服务器,同时还支持 CGI 协议的动态语言,如 perl、php等。但是不支持 java。Java 程序只能通过与 tomcat 配合完Nginx 专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 ,能经受高负载的考验。
Nginx 应用场景
1、http 服务器。Nginx 是一个 http 服务可以独立提供 http 服务。可以做网页静态服务器。
2、虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站(本站)使用的虚拟主机。
3、反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用 nginx 做反向代理
正向与反向代理
Nginx 不仅可以做反向代理,实现负载均衡。还能用作正向代理来进行上网等功能。正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。
反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。
负载均衡
客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服务器处理完毕后,再将结果返回给客户端。
这种架构模式对于早期的系统相对单一,并发请求相对较少的情况下是比较适合的,成本也低。这种架构会造成服务器相应客户端的请求日益缓慢,并发量特别大的时候,还容易造成服务器直接崩溃。很明显这是由于服务器性能的瓶颈造成的问题,如何解决这种情况呢?
- 升级服务器的配置,提高机器的物理性能
- 横向增加服务器的数量
这时候集群的概念产生了,单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡
动静分离
Nginx安装
- 我采用的是yum安装,挺方便的yum安装直接加到服务中了
- 环境: centOS7
添加 Nginx 源 (可以去官网找自己要的版本)
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
安装 Nginx
sudo yum install -y nginx
启动 Nginx 服务
sudo systemctl start nginx.service
设置开机自启 Nginx
sudo systemctl enable nginx.service
附加
nginx的依赖
yum安装虽然方便 但是省去了很多细节.. 这些操作用yum安装一般是不需要的
(1)需要安装 gcc 的环境 (编译器集合 这个一般装过了 省略)
(2)第三方的开发包。
-
PCRE(Perl Compatible Regular Expressions)
是一个 Perl 库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使 用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库。 pcre- config --version 查看版本 | pcre-devel 是使用 pcre 开发的一个二次开发库。nginx 也需要此库。yum install -y pcre pcre-devel
-
zlib
zlib 库提供了很多种压缩和解压缩的方式,nginx 使用 zlib 对 http 包的内容进行 gzip,所以需要在 linux 上安装 zlib 库。yum install -y zlib zlib-devel
-
OpenSSL
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持 http 协议,还支持 https(即在 ssl 协议上传输 http),所以需要在 linux安装 openssl 库。yum install -y openssl openssl-devel
本文由 考拉 创作,采用 知识共享署名4.0
国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: May 26,2020