nginx搭建本地服务器 正向代理 反向代理 动态资源 静态资源

前言

在互联网架构中服务器分为Web服务器和应用服务器。

Web服务器:一般指像nginx、apache这类的服务器,web服务器一般只能解析静态资源;
应用服务器:一般指像tomcat、jetty、resin这类的服务器,可以解析动态资源,也可以解析静态资源,但解析静态资源的能力没有web服务器好。(关于静态资源和动态资源,在本文的最后有说明)

  • 一般都是只有web服务器才能被外网访问,应用服务器只能内网访问。
  • gulp-webserver、http-server、nginx都可以用来搭建web服务器。
  • json-server可以用来搭建应用服务器。

什么是Nginx

Nginx是一个高性能的HTTP和反向代理(正向、反向代理,在文章最后有说明)服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。是目前使用的最多的web服务器或者代理服务器,像淘宝、新浪、网易、迅雷等都在使用 。

Nginx的优点

  1. 跨平台、配置简单,在不同的操作系统上都可以安装nginx;
  2. 非阻塞、高并发连接,能处理2-3万并发连接数,官方监测能支持5万并发;
  3. 内存消耗小,开启10个nginx才占150M内存,成本低廉:开源;
  4. 稳定性高:宕机的概率非常小;
  5. 节省宽带:支持GZIP压缩,例如一个100k的文件,只需要传输30k。可以添加浏览器本地缓存;
  6. 分部式部署(健康检查功能),例如部署一个应用,可能会部署到两台服务器上,如果有一个服务器宕机,会重新将请求提交到其他的节点上;
  7. 接收用户请求是异步的:浏览器将请求发送到nginx服务器,它先将用户请求全部接收下来,再一次性发送给后端web服务器,极大减轻了web服务器的压力;
  8. 负载均衡,例如同样的应用会部署多份,所有的请求都发给nginx,nginx再转发给不同的应用服务器;
  9. 事件驱动:通信机制采用epoll模型,是异步非阻塞事件处理机制,相当于提供了一个队列,排队解决;
  10. master/worker结构:一个master进程,生成一个或者多个worker进程;
  11. nginx的事件驱动和master/worker结构,实现了它的高并发;

Nginx的使用

1、安装

windows系统,点击下载 nginx 1.10.2稳定版,下载完解压,不需要安装,双击exe文件即启动nginx服务。

Mac 系统中,打开终端,输入以下命令,使用 brew 安装 nginx

brew install nginx

安装成功后,如下图所示,可以看到nginx的默认安装路径,默认安装路径为:/usr/local/etc/nginx/。
nginx
可以输入nginx -v 查看版本

2、进入安装目录

打开Finder,快捷键 shift+command+g,粘贴 nginx的默认路径,进入到nginx的安装目录下,如下图:
nginx
打开nginx.conf这个文件,能看到默认的端口号是8080,默认的域是localhost。
接下来我们要将自己的项目添加到这个文件中。
nginx
在修改之前先启动一下nginx服务,终端中输入 nginx 回车,启动服务。
如果敲回车后,终端没有输出信息,则说明服务启动成功,打开浏览器,访问http://localhost:8080/,出现下面这个页面,则说明服务启动成功。
nginx

3、添加本地项目的配置信息

现在我们来添加自己项目的配置信息。为了不破坏原有的配置文件,最好是新建一个自己项目的配置文件,如下图,我新建一个conf.d的文件夹,在里面新建了website.conf配置文件。
nginx
打开website.conf文件,写入以下内容,.conf文件的编写规则:中间用空格,最后用分号,注释用#号,并且注释要新起一行。

Mac下,打开Finder,同时按下 command+option+c,可以将文件路径复制到粘贴板中。

.conf 文件内容说明:

  • listen,服务器的端口号;
  • server_name,服务器域名,或者ip,多个域名的话用空格隔开;
  • root,项目的绝对路径;
  • index,设置打开的默认页面,默认为index.html;
  • location,配置代理,可以进行跨域访问数据,后面跟的是要转发的请求;
    • rewrite,路径重写,"[原路径] [新路径] break;"
    • proxy_pass,访问的目标地址;
server{
    listen 8808;
    server_name localhost;
    root /Users/zql/GP18/m_website/dist;
    index index.html;
    location /home {
        rewrite /home/(.*) /$1 break;
        proxy_pass http://127.0.0.1:3000;
    }
}

4、将项目的配置文件写入nginx.conf中

然后将自己项目的配置文件引入nginx的配置文件中,打开nginx.conf文件,在文件中写入:

include /usr/local/etc/nginx/conf.d/*.conf;

如下图:
nginx

5、重启服务

修改完之后,在终端中输入以下命令,重启nginx服务。

nginx -s reload

会弹出一个提示框,点击允许。
nginx

6、访问项目

在浏览器中输入上面配置的地址,http://127.0.0.1:8808/,就可以访问自己的项目了。

nginx命令:

  • nginx,启动服务;
  • nginx -s reload,重启服务
  • nginx -s stop,停止服务

补充

反向代理和反向代理

正向代理:一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。正向代理代理端代理的是客户端。
正向代理

反向代理:反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求,发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。反向代理代理端代理的是服务端。
反向代理

动态资源和静态资源分离

动态资源、静态资源分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路。动态资源、静态资源分离简单的概括是:动态文件与静态文件的分离。

软件开发中,有些请求是需要后台处理的(如:.jsp,.do等等),有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件)。这些不需要经过后台处理的文件称为静态文件,反之则称为动态文件。因此后台处理要忽略静态文件。这会有人又说那我后台忽略静态文件不就完了吗,当然这是可以的,但是这样后台的请求次数就明显增多了。在我们对资源的响应速度有要求的时候,我们应该使用这种动静分离的策略去解决。

动、静分离将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问,我们将静态资源放到nginx中,动态资源转发到tomcat服务器中。

动静分离的优点

  • 有益于性能优化,静态资源放在cdn,动态资源放在另外一台服务器;
  • 前后端分离,各自开发,效率更高;
  • 提高用户访问静态代码的速度,降低对后台应用访问;
发布了130 篇原创文章 · 获赞 46 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/Charissa2017/article/details/104864160