反向代理服务器Nginx——基础篇

783

简介

Nginx是一个轻量级的、高性能的、基于Http的、反向代理服务器,静态web服务器。Nginx最初是由俄罗斯人Igor Sysoev(伊戈尔-塞罗耶夫)使用C语言为俄罗斯访问量第二的Rambler.ru站点开发的一款服务器,2004年10月发布第一个版本。国内大型的站点,例如百度、京东、新浪、网易、淘宝等,都使用了NginxNginx的官网:nginx.org

代理服务器

正向代理

隐藏

image.png

翻墙

image.png

提速

image.png

缓存

image.png

反向代理

保护隐藏

image.png

分布式路由

image.png

负载均衡

image.png

动静分离

image.png

正向代理与反向代理区别

  • 正向代理的客户端清楚自己访问的服务器,而反向代理不清楚。
  • 正向代理的代理服务器架设在客户端,而反向代理的代理服务器架设在服务端。

Nginx的特点

高并发

一个Nginx服务器在不做任何配置的情况下并发量可达1000左右,在硬件条件允许的前提下,Nginx可支持高达5-10万的并发量(除了Nginx的设置外,Linux主机需要做大量的设置配合Nginx)。

对比一下TomcatTomcat服务器默认的并发量为150(不做任何配置),当有超过150个用户同时访问某Servlet时,Tomcat的响应就会变得非常慢。

低消耗

官方给出的测试结果,10000个非活跃连接,在Nginx中仅消耗2.5M内存,对于一般性的Dos攻击来说就不是事儿,但对于DDos也会是问题。举个简单的例子理解DosDDos两种攻击,如下:

  • Dos攻击:服务不可用,它攻击的是信息安全中的不可用性,例如:很多个人在一台ATM机上面取钱,正在取钱那个人打算取2万块钱,但是他每次只取1百,导致后面的人不能使用ATM机取钱,虽然说是攻击,但是它提交的都是合法的请求。

  • DDos攻击:是针对分布式系统的,例如系统有一堆的ATM机,那么我就来一堆人,像上面的Dos一样,占用了所有的ATM机。

热部署

可以在7*24小时不间断服务的前提下,进行Nginx版本的平滑升级,Nginx配置文件平滑修改,即在不停机的情况下升级Nginx,修改替换Nginx配置文件。

高可用

Nginx之所以可以实现高并发,是因为其具有很多工作进程worker,当这些工作进程中的某些出现问题停止工作时,并不会影响整个系统的整体运行,因为其他worker会接替那些出问题的线程。

高扩展

Nginx之所以现在的用户很多,是因为很多功能都已经开发好并模块化,若需要哪些功能,只需要安装相应功能的扩展模块即可。根据编写扩展模块所使用的语言不同,可以划分为两类:C语言扩展模块与LUA脚本扩展模块。

Nginx下载安装

Nginx下载

进入Nginx官网:nginx.org下载对应的版本。

Nginx安装

  • 首先将下载好的Nginx上传到主机的/usr/tools目录。
  • 由于Nginx是由C/C++语言编写的,所以对其进行编译就必须要使用相关的编译器,对于C/C++语言的编译器,使用最多的是gccgcc-c++,而这两款编译器在CentOS7中是没有安装的,所以首先要安装这两款编译器。操作如下图所示

image.png

  • 安装依赖库,基本的Nginx功能依赖于一些基本的库,在安装Nginx之前需要提前安装这些库。如下图所示

image.png

  • 创建解压目录,在/usr下创建apps目录,用于存放解压

image.png

  • 解压Nginx,将Nginx解压到/usr/apps目录中。

image.png

  • 生成makefile,在Nginx解压目录下运行make命令,用于完成编译,但此时会给出提示:没有指定目标,并且没有发下编译文件makefile。编译命令make需要根据编译文件makefile进行编译,所以在编译之前需要先生成编译文件makefile,使用configure命令可以生成该文件。

image.png

  • 编译安装,如下图所示

image.png

Nginx命令

  • 查看命令选项./nginx -h,可以查看Nginx命令的选项,如下图所示

image.png

  • ./nginx -v查看Nginx版本信息,如下图所示

image.png

  • ./nginx -V查看更多Nginx版本信息,例如gcc版本,OpenSSL的版本等,如下图所示

image.png

  • ./nginx -t测试配置文件是否正确,默认只测试默认的配置文件conf/nginx.conf./nginx -T测试配置文件是否正确,并显示配置文件内容;./nginx -tq在配置文件测试过程中,禁止显示非错误信息,只显示错误信息。可以结合-c选项所指定要测试的配置文件,注意,其不会启动Nginx

image.png

  • ./nginx -s stop/quit可以停止Nginx
    • ./nginx -s stop:强制停止Nginx,无论当前工作进程是否正在处理工作
    • ./nginx -s quit:优雅停止Nginx,使当前的工作进程完成当前工作后停止。

image.png

image.png

  • ./nginx -s reload在不重启Nginx的前提下重新加载Nginx配置文件,平滑启动

image.png

  • ./nginx -P指定Nginx配置文件的存放路径。
  • ./nginx -c file可启动Nginx-c指定启动的配置文件路径,启动成功后无任何显示。若不指定配置文件,则默认加载的是Nginx安装目录下的conf/nginx.conf

image.png

image.png

测试

  • 关闭防火墙,如下图所示

image.png

  • 浏览器访问,由于Nginx服务器默认的端口号为80,所以在浏览器中直接输入Nginx主机的IP,就可以看到Nginx欢迎页面,只要看到以下页面信息,则说明Nginx安装运行成功。

image.png