一、Nginx的虚拟主机介绍大家可能对虚拟主机了解不多,下面就来解释一下。虚拟主机是指在一台物理主机服务器上划分出多个磁盘空间。每个磁盘空间都是一个虚拟主机,每个虚拟主机都可以互不干扰地对外提供web服务。就像我们本地的虚拟机一样,我们可以在window系统上安装一个虚拟机,在虚拟机里面安装很多系统。这样我们就可以模拟很多台服务器。Nginx虚拟主机配置,我们可以在一台机器上配置多个虚拟主机,配置多个域名。这样我们就可以依靠虚拟主机转发到不同的应用,而不需要为每个系统都配置一个Nginx。2.搭建前端静态服务器我们已经讲解了很多基础知识和我们环境的搭建,下面我们来开发我们的第一个实际案例。我们知道一个系统是由前端页面和后端服务组成的。这不像我们刚开始学编码的时候,前端代码和后端代码放在一起。这种情况下性能很低,根本无法支持高并发访问。现在公司基本上是前后端分离的架构。前端负责开发前端页面,后端专门开发相应的后台界面。后端部署一般是集群部署,然后会加入相应的缓存和消息队列来提高接口的性能。我们通常如何部署前端?比如用Vue或者React开发的项目,我们通常会将前端代码单独放在一个文件服务器上或者购买CDN服务。当用户访问前端代码时,前端代码会向我们发起异步请求。后台界面,然后是渲染的数据,最后通过浏览显示出来。这与下图相同。我们可以使用Nginx作为文件服务器。用户访问Nginx找到对应的HTML代码返回给浏览器,然后请求后端接口将数据渲染到浏览器上。Nginx如何配置静态代码服务器?按照步骤,我们编辑/usr/local/nginx/conf/nginx.conf文件。找到server虚拟主机节点,配置静态html文件路径。根可以是相对路径或绝对路径。我们这里使用nginx中的html文件夹。index配置表示默认主页文件会根据html文件路径找,如果找不到先找index.html,再找index.htmserver{listen80;server_nameaabbccdd.com;#本地虚拟主机配置域名位置/{root/usr/local/nginx/html;#相对路径或者绝对路径即可indexxdclass.html;}}为了方便验证,我们需要准备相应的前端代码,直接修改代码在/usr/local/nginx/html/index.html,保存修改,然后重启我们的Nginx验证访问我们配置的本地域名解析,aabbccdd.com可以访问静态代码文件,包括如果你使用vue或者react开发的前端代码,也可以这样配置。3、Nginx搭建文件服务器在讲搭建文件服务器之前,我们一般开发一个系统,肯定会涉及到文件的上传,比如用户的头像,或者PDF文件。我们应该把这些东西存放在哪里?以前学习项目的时候,基本都是把图片传到项目本身,如果文件数量少的话还可以接受。如果图片的数量是几万到几十万到几百万,那么这个缺点就很明显了。如果使用Tomcat返回相应的文件,那么这肯定会占用大量的内存资源,带宽资源,并发量。基本上很少有公司会这样做,公司基本上都是使用文件服务器或者云厂商提供的CDN。这个文件服务器如何运作?前端用户上传文件到我们的后端服务器,后端服务器存储临时文件,然后将文件传输到我们的文件服务器,组装访问的文件访问URL,然后将我们的URL存储到对应的数据库中,以及最后将URL返回给我们的前端用户。这是完整的文件上传过程。这样做的好处是显而易见的。后续用户在访问相应文件时不需要经过我们的后台接口,直接访问单独的文件服务器。我们的后台接口更适合处理业务逻辑,适合的功能做适合的事。那么如何使用Nginx搭建我们的图片服务器呢?操作步骤很简单,我们只需要找到虚拟主机的nginx.conf配置文件,然后根据位置做一个路径映射即可。server{listen80;server_nameaabbccdd.com;location/app/img{alias/usr/local/software/img/;}}上面的配置表示用户访问aabbccdd.com/app/img/,命中我们配置的location路径,Nginx会根据对应的文件名在/usr/local/software/img/文件夹下找到对应的文件返回给用户。这个别名相当于取了一个别名,将用户访问的资源路径映射到我们配置的文件夹中。为了测试方便,我们直接在这个文件夹上传几张图片和文字。上传它们后,我们重新启动我们的Nginx。我们可以通过我的浏览器访问对应的资源路径,Nginx会根据路径找到对应的文件返回给我们。
