最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

Nginx如何实现动静分离?看这篇Docker的详细实现教程吧

XAMPP相关 admin 273浏览 0评论

. 什么是Nginx

Nginx是一款轻量级的Web服务器/反向代理服务器以及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强。事实上Nginx的并发能力,确实在同类型的网页服务器中表现较好,中国大陆使用Nginx的网站有:百度、京东、新浪、网易、腾讯、淘宝等。

. Docker安装

为了更方便地安装配置Nginx,我们可以采用Docker容器来进行安装配置。

1.基本安装

1.1 拉取Nginx镜像

docker pull nginx:latest

1.2 查看本地镜像列表

docker images

1.3 运行容器

docker run --name nginx-test -p 80:80 -d nginx

参数说明:

  • –name nginx-test:容器名称;
  • -p 80:80:进行端口映射,将本地 8080 端口映射到容器内部的 80 端口;
  • -d nginx:设置容器在后台一直运行。

1.4 安装成功

如果出现以下界面,就代表我们的Nginx安装成功了。

2.高级安装

为了方便开发和配置,我们可以将Docker容器内的信息在宿主机间进行打通。我们可以通过如下命令进入到容器内部。

docker exec -it nginx-test bash 

2.1 创建目录

mkdir -p /usr/local/nginx

2.2 依次在该目录下创建三个文件目录

#创建 www目录
mkdir -p /usr/local/nginx/html

#创建日志目录
mkdir -p /usr/local/nginx/logs

#创建配置文件目录
mkdir -p /usr/local/nginx/conf

2.3 拷贝配置文件

docker cp 容ID:/etc/nginx/nginx.conf /usr/local/nginx/conf

docker cp 容器ID:/etc/nginx/conf.d/ /usr/local/nginx/conf

2.4 修改配置文件

接着我们再将usr/local/nginx/conf/nginx.conf内容中的 include 默认路径,改为当前路径。

2.5 重新创建/运行容器(conf.d只挂载文件夹,不挂载文件)

docker run -d -p 80:80 --name nginx-80 
-v /usr/local/nginx/html:/usr/share/nginx/html 
-v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf 
-v /usr/local/nginx/conf/conf.d/:/etc/nginx/conf.d/ 
-v /usr/local/nginx/logs:/var/log/nginx nginx

2.6 测试重新访问

. Nginx 三大功能实现

1.配置静态资源

1.1 配置处理静态文件

由于Nginx性能很高,对于常用的静态资源,我们可以直接交由Nginx进行访问处理。加载静态资源的配置可以如下所示:

location / {
   root   D:/nginx-tomcat/exam; # /opt/static/exam  /usr/local/nginx/html/exam;
   index  index.html index.htm;  
}

1.2 Docker配置示例

如果是采用Docker配置,可以采用如下所示:

location / { root /usr/share/nginx/html/exam; #运行时部署数据卷-v。外部完成映射。此处需要指定的是Docker内部的目录 index index.html index.htm; }

2.配置反向代理

2.1 让nginx进行转发,即所谓的反向代理访问localhost时转到tomcat

修改nginx.conf文件,查看server节点,相当于一个代理服务器,这里可以配置多个。

  • listen:表示当前的代理服务器监听的端口,默认的是监听80端口;
  • server_name:表示服务名称;
  • location:表示匹配的路径,这时配置了/表示所有请求都被匹配到这里;
  • root:root表示当匹配这个请求路径时,将会在这个文件夹内寻找相应的文件;
  • index:当没有指定主页时,默认会选择这个指定的文件。它可以有多个,并按顺序来加载,如果第一个不存在,则找第二个,依此类推;
  • error_page:代表错误页面,
 server {
       listen       80;
       server_name  localhost;
       #charset koi8-r;
       #access_log  logs/host.access.log  main;
       location / {
           root   html;
           index  index.html index.htm;
       }
       #error_page  404          

2.2 localhost时转到tomcat时,要修改两个地方:

 server_name  exam_qf;
location / {
    proxy_pass http://127.0.0.1:8080;
}      

proxy_pass表示代理路径,相当于转发,而不像之前说的root必须指定一个文件夹。

3.实现动静分离

我们可以按照文件类型来进行过滤,比如jsp直接给tomcat处理,因为nginx并不是servlet 容器,没办法处理JSP。而html、js、css这些文件不需要处理,直接给nginx进行缓存即可。

  • 动态资源:如JSP由Tomcat或其它WEB服务器处理;
  • 静态资源:如图片、css、js等由nginx服务器完成。

动静分离可以充分利用各自的优势完成高性能访问,让JSP页面交给tomcat处理,而html、png等一些图片和JS等直接给nginx进行缓存。

location ~ \.jsp$ {  
    proxy_pass http://127.0.0.1:8080;  
}  
         
location ~ \.(html)$ {  
    root  /usr/share/nginx/html;  
}  
~ .*\.(html|js|css|images|png|gif|jpg|jpeg|swf|ioc|rar|zip|txt|fiv|mid|doc|ppt|xls|mp3|wma)$    

~:表示正则匹配,后面的内容可以是正则表达式匹配;

 .:点表示任意字符; 

*:表示一个或多个字符;

 \.:是转移字符;

 |:表示或;

 $:表示结尾;

 整个配置代表括号晨面的后缀请求都由nginx处理。

配置方案:

location ~ \.jsp$ {  
   proxy_pass http://127.0.0.1:8080;  
}  
         
location ~ \.(html|js|css|png|gif)$ {  
   root static/maven_exam;   #此处在nginx 目录下创建该文件夹(存储静态资源访问)
}  

同时,页面上方要进行静态资源的变更,应该以绝对路径方式进行访问。

<script type="text/javascript" src="/js/jquery-3.1.1.js"></script>
<script src="/js/quiz.js"></script>  

nginx对location访问,优先是以精确优先为原则,故将精确细的请求放在前面,这样就可以完成基本的动静分离配置了。

location ~ \.(html|js|css|png|gif)$ {  
   root D:/static;   #可以是nginx 外部的文件
}

location /{  
   proxy_pass http://127.0.0.1:8080;  
}  

现在你知道怎么利用Docker安装配置Nginx了吗?

转载请注明:XAMPP中文组官网 » Nginx如何实现动静分离?看这篇Docker的详细实现教程吧

您必须 登录 才能发表评论!