Nginx 极简入门教程

基本介绍

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

Nginx 是由伊戈尔·赛索耶夫为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004104 日。

Nginx 特点是占有内存少,并发能力强。

事实上 nginx 的并发能力确实在同类型的网页服务器中表现较好,一般来说,如果我们在项目中引入了 Nginx ,我们的项目架构可能是这样:

在这样的架构中 , Nginx 所代表的角色叫做负载均衡服务器或者反向代理服务器,所有请求首先到达 Nginx 上,再由 Nginx 根据提前配置好的转发规则,将客户端发来的请求转发到某一个 Tomcat 上去。

那么这里涉及到两个概念:

  • 负载均衡服务器

就是进行请求转发,降低某一个服务器的压力。负载均衡策略很多,也有很多层,对于一些大型网站基本上从 DNS 就开始负载均衡,负载均衡有硬件和软件之分,各自代表分别是 F5Nginx (目前 Nginx 已经被 F5 收购),早些年,也可以使用 Apache 来做负载均衡,但是效率不如 Nginx ,所以现在主流方案是 Nginx

  • 反向代理服务器:

另一个概念是反向代理服务器,要说反向代理,得先说正向代理,看下面一张图:

在这个过程中,Google 并不知道真正访问它的客户端是谁,它只知道这个中间服务器在访问它。因此,这里的代理,实际上是中间服务器代理了客户端,这种代理叫做正向代理。

那么什么是反向代理呢?反向代理有点类似于大家打 10086 客服,看下面一张图:

在这个过程中,10086 这个号码相当于是一个代理,真正提供服务的,是话务员,但是对于客户来说,他不关心到底是哪一个话务员提供的服务,他只需要记得 10086 这个号码就行了。

所有的请求打到 10086 上,再由 10086 将请求转发给某一个话务员去处理。因此,在这里,10086 就相当于是一个代理,只不过它代理的是话务员而不是客户端,这种代理称之为反向代理。

Nginx 的优势

在 Java 开发中,Nginx 有着非常广泛的使用,随便举几点:

  1. 使用 Nginx 做静态资源服务器:Java 中的资源可以分为动态和静态,动态需要经过 Tomcat 解析之后,才能返回给浏览器,例如 JSP 页面、Freemarker 页面、控制器返回的 JSON 数据等,都算作动态资源,动态资源经过了 Tomcat 处理,速度必然降低。对于静态资源,例如图片、HTML、JS、CSS 等资源,这种资源可以不必经过 Tomcat 解析,当客户端请求这些资源时,之间将资源返回给客户端就行了。此时,可以使用 Nginx 搭建静态资源服务器,将静态资源直接返回给客户端。

  2. 使用 Nginx 做负载均衡服务器,无论是使用 Dubbo 还是 Spirng Cloud ,除了使用各自自带的负载均衡策略之外,也都可以使用 Nginx 做负载均衡服务器。

  3. 支持高并发、内存消耗少、成本低廉、配置简单、运行稳定等。

Nginx 安装

由于基本上都是在 Linux 上使用 Nginx,因此松哥这里主要向大家展示 CentOS 7 安装 Nginx:

  • 首先下载 Nginx

  • wget http://nginx.org/download/nginx-1.17.0.tar.gz

然后解压下载的目录,进入解压目录中,在编译安装之前,需要安装两个依赖:

  • yum -y install pcre-devel

  • yum -y install openssl openssl-devel

然后开始编译安装:

  • ./configure

  • make

  • make install

装好之后,默认安装位置在 :

  • /usr/local/nginx/sbin/nginx

进入到该目录的 sbin 目录下,执行 nginx 即可启动 Nginx

Nginx 启动成功之后,在浏览器中直接访问 Nginx 地址:

看到如上页面,表示 Nginx 已经安装成功了。

如果修改了 Nginx 配置,则可以通过如下命令重新加载 Nginx 配置文件:

  • ./nginx -s reload

总结

本文算是一个简单的 Nginx 扫盲文,希望大家看完后对 Nginx 有一个基本的认知。本文先说到这里,有问题欢迎留言讨论。

Nginx 极简入门教程相关推荐

  1. Python极简入门教程

    前言 为了方便各位小白能轻松入门Python,同时加深自己对Python的理解,所以创造了"Python极简入门教程",希望能帮到大家,若有错误请多指正,谢谢.极简入门教程代表着不 ...

  2. tensorflow平台极简方式_TensorFlow极简入门教程

    原标题:TensorFlow极简入门教程 随着 TensorFlow 在研究及产品中的应用日益广泛,很多开发者及研究者都希望能深入学习这一深度学习框架.本文介绍了TensorFlow 基础,包括静态计 ...

  3. pyecharts极简入门教程

    作者:luanhz 来源:小数志 导读 数据可视化是整个数据分析流程中的关键环节,甚至有着一图定成败的关键性地位.前期,陆续推出了matplotlib和seaborn详细入门教程,对于常规的数据探索和 ...

  4. pyecharts x轴字体大小调整_pyecharts极简入门教程

    导读 数据可视化是整个数据分析流程中的关键环节,甚至有着一图定成败的关键性地位.前期,陆续推出了matplotlib和seaborn详细入门教程,对于常规的数据探索和基本图表制作是足够的,但二者的一个 ...

  5. Docker 极简入门教程,傻瓜都能看懂!

    富 Web 时代,应用变得越来越强大,与此同时也越来越复杂.集群部署.隔离环境.灰度发布以及动态扩容缺一不可,而容器化则成为中间的必要桥梁. 本文我们就来探索一下 Docker 的神秘世界,从零到一掌 ...

  6. 机器学习极简入门教程(一)

    阅读此文,需要有python基础,有英文阅读能力的人点这里. part1 这里不回答机器学习是什么,能做什么,只告诉你如何快速上手. 熟悉你手中的数据. 1.常用模块导入命令 import panda ...

  7. Powerlink协议使用极简入门教程

    网上关于powerlink协议的知识太少,而且都太分散太零碎,容易让人一头扎进去摸不着头绪.新手看到demo源码可能都不知道有什么用途,怎么能联动的跑起来看到效果,有种无从下手的感觉.其实Powerl ...

  8. [MCU][测试工具]MCU性能测试,CoreMark极简入门教程

    提起MCU性能测试,最著名的就是CoreMark和Dhrystone. CoreMark以每秒迭代次数作为性能评价,而Dhrystone的DMIPS与Dhrystone标准相关. 本文讨论CoreMa ...

  9. 芋道 Apollo 极简入门

    点击上方"芋道源码",选择"设为星标" 做积极的人,而不是积极废人! 源码精品专栏 原创 | Java 2020 超神之路,很肝~ 中文详细注释的开源项目 RP ...

最新文章

  1. java生成横向的pdf,java – 如何生成横向跨越多个页面的PDF报告
  2. 网上服务器租借要多少钱_台湾租借日本服装多少钱-北京和益文化传媒有限公司...
  3. spring+hibernate的配置
  4. Ubuntu xrdp 遠端桌面連線
  5. php实现的mongodb操作类
  6. SegmentFault 高阳:从开发者到创业者
  7. 1011 Sticks
  8. JavaScript的陷阱[转]
  9. 还在重复写空指针检查代码?考虑使用 Optional 吧!
  10. 台式电脑桌面没有计算机图标,电脑桌面上“我的电脑”的图标没了怎么办
  11. 【必修】人工智能原理 学习笔记(二)chapter 2 产生式系统
  12. rose oracle双机切换故障,oracle 审计引起的问题 (双机软件roseha)
  13. 交警计算机系统审计,公安移动警务审计及考核系统
  14. AIRIOT物联网低代码平台如何配置交通部JT-808协议?
  15. 以太坊平台增加类 CrytoNote 环签名
  16. 【LEDE】树莓派上玩LEDE终极指南-86-OpenWrt增加踢人功能
  17. 主流物联网协议选择:MQTT、CoAP 还是 LwM2M?
  18. daemontools supervise
  19. matlab亮度平衡_亮度对比度算法MATLAB实现
  20. 202112-1序列查询

热门文章

  1. C#的多线程机制探索7
  2. JS 获取链接(url)参数以及锚链接(anchor)结合富ajax的应用(ajax前进/后退的问题)...
  3. 在Windows环境下用Editplus打造一个Python编辑调试环境
  4. 读写锁(ReadwriteLock)
  5. 博弈——威佐夫博弈(hdu1527,2177)
  6. phpredis -- Redis编译安装,PHP 7 安装 Redis 扩展
  7. centos7更改管理员密码
  8. strcpy和strcat
  9. Linux(debian7)操作基础(三)之PCI/PCI-E设备配置空间
  10. C++——有关chrono库的duration