在上一篇文章提到了网站的注册、域名的购买和网站的搭建,最后也说到若域名下某一端口,比如80或443需要挂多个项目,可以使用Nginx或者haproxy等来进行转发。之前已经介绍了haproxy,今天来介绍另外一种方式——使用Nginx来搭建。

打开网易新闻 查看精彩图片

一、Nginx介绍

在这之前,我们先来认识一下Nginx,也是我们前后端开发工程师必须掌握的神器。Nginx有很多使用场景,比如反向代理、负载均衡、动静分离和跨域等等。我们先来说一下这些名词的含义。

(1)反向代理

用户访问某个网站时,往往输入的是对外提供的域名或者公网ip,而这个域名或者公网ip访问的就是代理服务器Nginx,由反向代理服务器去选择内网目标服务器获取数据后,再返回给客户端,此时反向代理服务器和内网目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。

打开网易新闻 查看精彩图片

(2)负载均衡

在访问量较多的时候,可以通过负载均衡,将多个请求分摊到多台服务器上,比如上图中通过Nginx服务器负载到了三台内网服务器,从而提高系统的吞吐率;另外一个作用就是即使其中某一台服务器上的服务不能正常访问,Nginx会自动切换到其他正常的服务器,以此来提高系统的可伸缩性与可靠性。

(3)动静分离

Nginx 的动静分离,指的是由 Nginx 将客户端请求进行分类转发,静态资源请求(如html、css、js、img等)由静态资源服务器处理,动态资源请求(如接口程序等)由 tomcat 服务器处理,因此来提高访问的效率。因为直接通过Nginx来访问静态资源要比代理到tomcat里面访问得更快, tomcat 本身处理静态资源的效率要更低一点,而且还会带来额外的资源开销。像很多中小企业会搭建自己公司的门户网站,上面放一些简单的介绍,就可以把这些资源放到Nginx配置的指定目录下,然后通过反向代理的地址就可以直接访问,不需要启动项目,也方便维护,后续更新可能只需要修改html里面的文字即可。

(4)跨域

跨域是前后端分离开发中非常常见的问题。它是由浏览器的同源策略造成的,是浏览器对JavaScript 实施的安全限制,所谓同源(即指在同一个域)就是两个页面具有相同的协议protocol,主机host 和端口号port 则就会造成跨域。使用Nginx就非常方便解决跨域问题,上面说的反向代理就是解决跨域的一种方案。

二、Nginx部署

小编还是先介绍一下使用docker-compose部署Nginx,原理很简单,需要编写几个文件:

(1)docker-compose.yml,在这个配置文件里面配置需要下载的镜像、映射的端口、数据卷的挂载、配置时区等等;

(2)Nginx的配置文件default.conf【可能每个版本取名不一样】,主要是配置负载的端口和服务,比如官网就可以直接配置html的路径

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

在docker-compose.yml 同级目录使用docker-compose up -d命令来进行启动,启动之后就可以访问静态页面。

打开网易新闻 查看精彩图片

我们可以进一步查看Nginx的日志,使用docker-compose logs -f,在使用Nginx时,查看日志也会是非常重要的,有时候受到攻击,通过日志来排查访问的ip,从而通过安全策略进行限制。

打开网易新闻 查看精彩图片

除了使用docker-compose的方式来安装部署Nginx,也可以使用安装包的方式直接安装部署,但是这两种方式,都有一个让人头疼的问题,那就是需要手动配置Nginx的配置文件,不管是叫Nginx.conf还是default.conf,配置虽然算不上繁琐但是特别容易出问题,一点点的不注意可能都需要调试很久。

今天就给大家推荐一个可以直接在线按需生成配置文件的工具Nginxconfig,小编使用了一下,感觉还不错。(可以访问Nginxconfig.io)

打开网易新闻 查看精彩图片

配置好之后可以直接下载包含配置的安装包,也可以在线查看配置文件。

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

感兴趣的小伙伴可以去试一下,降低了不少我们手动配置引发的错误。