加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

Nginx的这些妙用,你肯定有不知道的!

发布时间:2019-12-26 12:16:01 所属栏目:Unix 来源:站长网
导读:副标题#e# Nginx 因为它的稳定性、丰富的模块库、灵活的配置和较低的资源消耗而闻名 。目前应该是几乎所有项目建设必备。今天通过这篇攻略让你快速通关 Nginx。 图片来自 Pexels Nginx 简介 Nginx 是一个免费、开源、高性能、轻量级的 HTTP 和反向代理服务
副标题[/!--empirenews.page--]

Nginx 因为它的稳定性、丰富的模块库、灵活的配置和较低的资源消耗而闻名 。目前应该是几乎所有项目建设必备。今天通过这篇攻略让你快速通关 Nginx。

Nginx的这些妙用,你肯定有不知道的!

图片来自 Pexels

Nginx 简介

Nginx 是一个免费、开源、高性能、轻量级的 HTTP 和反向代理服务器,也是一个电子邮件(IMAP/POP3)代理服务器,其特点是占有内存少,并发能力强。

Nginx 由内核和一系列模块组成,内核提供 Web 服务的基本功能,如启用网络协议,创建运行环境,接收和分配客户端请求,处理模块之间的交互。

Nginx 的各种功能和操作都由模块来实现。Nginx 的模块从结构上分为:

核心模块:HTTP 模块、EVENT 模块和 MAIL 模块。

基础模块:HTTP Access 模块、HTTP FastCGI 模块、HTTP Proxy 模块和 HTTP Rewrite 模块。

第三方模块:HTTP Upstream Request Hash 模块、Notice 模块和 HTTP Access Key 模块及用户自己开发的模块。

这样的设计使 Nginx 方便开发和扩展,也正因此才使得 Nginx 功能如此强大。

Nginx 的模块默认编译进 Nginx 中,如果需要增加或删除模块,需要重新编译 Nginx,这一点不如 Apache 的动态加载模块方便。

如果有需要动态加载模块,可以使用由淘宝网发起的 Web 服务器 Tengine,在 Nginx 的基础上增加了很多高级特性,完全兼容 Nginx,已被国内很多网站采用。

Nginx 有很多扩展版本:

开源版 nginx.org

商业版 NGINX Plus

淘宝网发起的 Web 服务器 Tengine

基于 Nginx 和 Lua 的 Web 平台 OpenResty

Nginx 作为 Web 服务器

Web 服务器也称为 WWW(World Wide Web)服务器,主要功能是提供网上信息浏览服务,常常以 B/S(Browser/Server)方式提供服务:

应用层使用 HTTP 协议。

HTML 文档格式。

浏览器统一资源定位器(URL)。

Nginx 可以作为静态页面的 Web 服务器,同时还支持 CGI 协议的动态语言,比如 Perl、PHP 等,但是不支持 Java。

Java 程序一般都通过与 Tomcat 配合完成。作为一名 Java 程序员,肯定要理解下 Nginx 和 Tomcat 的区别了。

Nginx、Apache 和 Tomcat:

Nginx:由俄罗斯程序员 Igor Sysoev 所开发的轻量级、高并发 HTTP 服务器。

Apache HTTP Server Project:一个 Apache 基金会下的 HTTP 服务项目,和 Nginx 功能类似。

Apache Tomcat:是 Apache 基金会下的另外一个项目,是一个 Application Server。

更准确的说是一个 Servlet 应用容器,与 Apache HTTP Server 和 Nginx 相比,Tomcat 能够动态的生成资源并返回到客户端。

Apache HTTP Server 和 Nginx 本身不支持生成动态页面,但它们可以通过其他模块来支持(例如通过 Shell、PHP、Python 脚本程序来动态生成内容)。

一个 HTTP Server 关心的是 HTTP 协议层面的传输和访问控制,所以在 Apache/Nginx 上你可以看到代理、负载均衡等功能。

客户端通过 HTTP Server 访问服务器上存储的资源(HTML 文件、图片文件等等)。

通过 CGI 技术,也可以将处理过的内容通过 HTTP Server 分发,但是一个 HTTP Server 始终只是把服务器上的文件如实的通过 HTTP 协议传输给客户端。

而应用服务器,则是一个应用执行的容器。它首先需要支持开发语言的运行(对于 Tomcat 来说,就是 Java),保证应用能够在应用服务器上正常运行。

其次,需要支持应用相关的规范,例如类库、安全方面的特性。对于 Tomcat 来说,就是需要提供 JSP/Sevlet 运行需要的标准类库、Interface 等。

为了方便,应用服务器往往也会集成 HTTP Server 的功能,但是不如专业的 HTTP Server 那么强大。

所以应用服务器往往是运行在 HTTP Server 的背后,执行应用,将动态的内容转化为静态的内容之后,通过 HTTP Server 分发到客户端。

正向代理

正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。

正向代理“代理”的是客户端。比如你想去 Google 看个“动作片”,可国内不允许呀,就需要找翻墙代理,这个就是所谓的“正向代理”。

Nginx的这些妙用,你肯定有不知道的!

反向代理与负载均衡

反向代理正好与正向代理相反,反向代理是指以代理服务器来接收 Internet 上的连接请求,然后将请求转发到内部网络上的服务器,并将服务器上得到的结果返回给客户端。

此时代理服务器对外表现就是一个服务器,客户端对代理是无感知的。反向代理“代理”的是服务端。

再比如,你想本本分分的在“优酷”上看个“爱情片”,youku.com 会把你的请求分发到存放片片的那台机器上,这个就是所谓的“反向代理”。

为什么使用反向代理,原因如下:

保护和隐藏原始资源服务器

加密和 SSL 加速

通过缓存静态资源,加速 Web 请求

实现负载均衡

负载均衡:TODO: 留一个负载均衡详细介绍传送门。

地址重定向:Nginx 的 Rewrite 主要的功能就是实现 URL 重写,比如输入 360.com 跳转到了 360.cn,baidu.cn 跳转到了 baidu.com。

动静分离

为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。

这里指的就是让动态程序(Java、PHP)去访问应用服务器,让缓存、图片、JS、CSS 等去访问 Nginx。

Nginx 安装

①下载Nginx:

wget  

②安装需要编译的插件:

用于编译 C、C++ 代码的 GCC。

用 C 语言编写的正则表达式函数库 Pcre(使用 Rewrite 模块)。

用于数据压缩的函式库的 Zlib。

安全套接字层密码库 OpenSSL(启用 SSL 支持)。

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读