Nginx高级篇(一)反向代理搞动静分离

实战一:Nginx的反向代理实现nginx+apache动静分离

nginx可以实现反向代理服务器+负载均衡 用nginx做反向代理和负载均衡非常简单 支持两个用法 1个是proxy
一个是upstream 分别用来做反向代理和负载均衡 以反向代理为例 nginx不自己处理php的相关请求
而是把php的相关请求转发给apache来处理

Nginx高级篇(一)反向代理搞动静分离_第1张图片

这!就是传说中的“动静分离” 动静分离不会一个严谨的说法 叫反向代理更加严谨!

我做的时候是有个前提条件的 我是在一台服务器上安装了apache nginx php7.2 并且php7.2编译安装了两边
一个是为nginx配合的 另一个是作为apache的模块来运行 当然别忘记了mysql哈!
具体怎么做的可以参考我的learnKu博客文章:
https://learnku.com/articles/41787#88f5f0
Nginx高级篇(一)反向代理搞动静分离_第2张图片
四篇文章都要看哈!不然你跑不起来!也就实现不了动静分离!当然我是懒的再去弄另一个服务器!索性都弄到一台服务器上了!实战你可以nginx一台
apache一台 彻底分开 动静分离! nginx当中实现起来很简单 就是将php的请求全部都转发给apache来运行
我们的apache监听的是8080端口 只需要在nginx的nginx.conf当中做如下配置即可!
记住了是http://10.10.16.170:8080 一定要加上协议!

Nginx高级篇(一)反向代理搞动静分离_第3张图片
nginx的访问目录是usr/local/nginx/html apache那边的访问目录也是usr/local/nginx/html
这个时候你访问test.php 内容如下:
在这里插入图片描述
然后你去看nginx的日志access.log文件发现 静态图片是nginx加载的 然后你再去看apache的日志文件发现
test.php是apache来处理的! 这就实现了动静分离!是不是很简单!没那么神秘!

实战二:ThinkPhp5.1动静分离即反向代理案例:

只说大体
1.项目部署到/usr/local/nginx/html/tp5
2.nginx的虚拟主机配置如下: Nginx高级篇(一)反向代理搞动静分离_第4张图片

3.apache的虚拟主机配置如下: Nginx高级篇(一)反向代理搞动静分离_第5张图片

4.静态资源文件路径如下: Nginx高级篇(一)反向代理搞动静分离_第6张图片
路径千万别写错哈 不然nginx找不到!
5.访问tp的pathinfo路径: Nginx高级篇(一)反向代理搞动静分离_第7张图片

完事!
你去看nginx的access.log会发现静态资源在nginx当中加载的 apache当中只是加载的php文件!
因为nginx通过proxy_pass反向代理到了apache当中去处理php文件的请求!
另外nignx和apache的虚拟站点都是指向同一个位置的哈! 静态资源文件我们没必要去location当中配置
tp当中的静态资源位置public/static当中 那么静态资源你直接在html当中写 /static/images/aa.png即可
千万别写./static/…这样会被tp解析成模块就会报错哦!

实战三:Nginx实现动静分离的好处是什么呢?

Nginx高级篇(一)反向代理搞动静分离_第8张图片

动静分离是将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。

Nginx高级篇(一)反向代理搞动静分离_第9张图片

动静分离的一种做法是将静态资源部署在nginx上,后台项目部署到应用服务器上,根据一定规则静态资源的请求全部请求nginx服务器,达到动静分离的目标。

nginx动静分离的好处

api接口服务化:动静分离之后,后端应用更为服务化,只需要通过提供api接口即可,可以为多个功能模块甚至是多个平台的功能使用,可以有效的节省后端人力,更便于功能维护。

前后端开发并行:前后端只需要关心接口协议即可,各自的开发相互不干扰,并行开发,并行自测,可以有效的提高开发时间,也可以有些的减少联调时间

减轻后端服务器压力,提高静态资源访问速度:后端不用再将模板渲染为html返回给用户端,且静态服务器可以采用更为专业的技术提高静态资源的访问速度。

你可能感兴趣的:(nginx)