随着现在软件行业分工的细化,研发同学更关注研发的功能,对一些常见的运维部署不是那么熟悉,例如常常用到的nginx、docker等等。
今天先来看看nginx可以在项目中做些什么?
注意:本文主要讨论nginx在不加载第三方模块的情况下。
nginx目录
首先看下nginx安装后的目录(以windows为例),如下图
一般只需关注conf文件夹中的nginx.conf文件即可,如果启动有问题,可以去logs文件夹查看相关日志,nginx.exe为启动程序入口。
HTTP服务器
Nginx本身也是一个静态资源的服务器,当只有静态资源的时候,就可以使用Nginx来做服务器。如下图
启动nginx,根据上图的监听端口,如下
listen 80;
server_name localhost;
可以直接访问localhost来访问html/index.html,请求结果如下:
另外nginx可以将静态资源和动态资源分离,如下图
因此nginx常常做静态资源服务器或者将动静资源分离。
反向代理
反向代理应该是Nginx做的最多的一件事了,什么是反向代理呢?为什么需要反向代理服务器呢?
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
简单来说就是真实的服务器不能直接被外部网络访问,所以需要一台代理服务器,而代理服务器能被外部网络访问的同时又跟真实服务器在同一个网络环境,当然也可能是同一台服务器,端口不同而已。如下图:
配置如下:
负载均衡
负载均衡也是Nginx常用的一个功能,负载均衡就是将请求分摊到多个操作单元上进行执行,一般来说一个服务通常会有多台实例运行,因此负载均衡是非常常用的。
nginx常用3种负载均衡策略:RR(轮询)、ip_hash(每个请求按访问ip的hash结果分配)、权重,配置如下
RR:
ip_hash:
权重:
正向代理
正向代理,意思是一个位于客户端和原始服务器之间的服务器,常常为了从原始服务器取得内容,客户端需要向代理发送一个请求并指定原始服务器,然后代理服务器向原始服务器转交请求并将获得的内容返回给客户端。常常正向代理是解决的是客户端无法访问外网ip或者默写特定的ip地址而设置的,如下图
注意:正向代理,代理的是客户端;反向代理,代理的是服务端。本质不同。
配置如下:
nginx还有很多第三方模块,让其功能更加强大,明天给大家分享下,如何通过nginx和openresty动态封杀异常IP