为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。
在动静分离的tomcat的时候比较明显,因为tomcat解析静态很慢,其实这些原理的话都很好理解,简单来说,就是使用正则表达式匹配过滤,然后交个不同的服务器。
这里nginx的安装就不在写了,其中重要的配置如下。
location / {
root /var/www/html/upload;
index index.php index.htm;
}
location ~ .*\.(html|gif|jpg|png|bmp|swf|jpeg)$ {
proxy_pass http://192.168.43.22:80;
}
location ~ \.php$ {
proxy_pass http://192.168.43.62:80;
}
location / 的作用
定义了请求代理的时候nginx去/var/www/html/upload 下寻找index.php 当他找到index.php的时候匹配了下面的正则 location ~ \.php$。
location ~ \.php$ 的作用
以php结尾的都以代理的方式转发给http(192.168.43.62),http1 去处理,这里http1要去看自己的配置文件 在自己的配置文件中定义网站根目录 /var/www/html/upload 找.index.php 然后处理解析返回给nginx 。
location ~ .*\.(html|gif|jpg|png|bmp|swf|jpeg)$ 的作用
以html等等的静态页面都交给http2(192.168.43.22)来处理 ,http2 去找自己的网站目录 然后返回给nginx 。
两个http放的肯定是一样的目录,只不过每个服务器的任务不一样。
代理本身要有网站的目录,因为最上面的 location / 先生效 如果没有目录 会直接提示找不到目录 不会再往下匹配。
3个服务器放网站的目录一样 网站文件一样, http的配置文件 根目录要指定对。
--------------------------------------------------
http1的配置文件 (处理php的机器)
----------------------------------------------
http2 (处理html的网站)
配置一样 只不过多写了个html的网页测试
-----------------------------------------------------
访问代理服务器
可以在http1上看访问日志是http1处理的网站
访问html的网页
在http2上看访问日志 可以看到是http2处理的
好了, 到此结束 ,希望对你有所帮助。