一、 Nginx负载均衡
- 什么是Nginx
Nginx是一个高性能的HTTP和反向代理服务器,具有内存少、高并发能力强特点。 - 静态资源与动态资源区分
(1) 静态资源主要是不需要服务器、不经常变动的资源。
ex: js、png、css…
(2) 动态资源相对于前者就有了数据上的交互。换句话讲,用户在页面递交一个请求经过服务器到达我们的Redis或者Oracle数据库中去。 - 公司现在是否打成的war包中包含js、jpg、html、css
我们公司现在是这样的。
ex: http://127.0.0.1:8080/项目名/css/button.css - 不动静分离的坏处
那么当我们每次访问网站请求静态资源都会去后台服务器进行下载
ex: 阿里的开销最大的是网络带宽、流量 - 为何要动静分离
如果我们用到动静分离、将动态资源和静态资源隔离开,到我们服务器下载静态资源,当下载完成之后,会把静态资源保存到本地浏览器缓存;
当我们再次想要访问静态资源时,不会在去服务器请求,直接到本地浏览器缓存中去拿(这就是第一次访问慢,接着越访问越快的原因)
(一) Nginx动静分离案例
- 配置静态资源
[root@VM_0_12_centos agent]#
server {
listen 50000;
server_name localhost;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
proxy_set_header Host $host:50000;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
location / {
root /var/local/static;
index index.html index.htm;
}
#location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
#{
#root /var/local/static;
#expires 30d;
#}
location ~* .*\.(jpg|png|gif|jpeg)$
{
root /var/local/static/images;
}
(1) 我们进入/var/local/static目录下先新建一个index.html,作为浏览器地址访问的首页
[root@VM_0_12_centos static]# echo "welcome to my nginx page" > /var/local/static/index.html
(2) 新建/var/local/static/images目录,并上传一张chichi.jpeg静态文件到此目录
(3) 进入到/usr/local/nginx/sbin目录
[root@VM_0_12_centos sbin]# ./nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@VM_0_12_centos sbin]# ./nginx -s reload
[root@VM_0_12_centos sbin]# ps -ef|grep nginx
root 25603 25976 0 10:20 ? 00:00:00 nginx: worker process
root 25877 6808 0 10:20 pts/0 00:00:00 grep --color=auto nginx
root 25976 1 0 4月18 ? 00:00:00 nginx: master process ./nginx
(4) 浏览器地址栏访问:
http://111.229.96.161:50000/
http://111.229.96.161:50000/chichi.jpeg
- 接下来做动静分离,将.jsp、.java等内容写在web上,web配置动态资源
[root@VM_0_12_centos ~]# cd /usr/local/tomcat-8.5.50/webapps/ROOT
[root@VM_0_12_centos ROOT]# touch javaTest.jsp
[root@VM_0_12_centos ROOT]# vi javaTest.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<HTML>
<HEAD>
<TITLE>迟迟的JSP Page</TITLE>
</HEAD>
<BODY>
<%
Random rand = new Random();
out.println("<h1>迟迟最喜欢的随机数是:<h1>");
out.println(rand.nextInt(99)+100);
%>
</BODY>
</HTML>
[root@VM_0_12_centos tomcat-8.5.50]# cd bin
[root@VM_0_12_centos bin]# ./startup.sh
Using CATALINA_BASE: /usr/local/tomcat-8.5.50
Using CATALINA_HOME: /usr/local/tomcat-8.5.50
Using CATALINA_TMPDIR: /usr/local/tomcat-8.5.50/temp
Using JRE_HOME: /usr/local/java/jdk1.8.0_11
Using CLASSPATH: /usr/local/tomcat-8.5.50/bin/bootstrap.jar:/usr/local/tomcat-8.5.50/bin/tomcat-juli.jar
Tomcat started.
[root@VM_0_12_centos bin]# ps -ef|grep tomcat
root 31904 1 71 10:41 pts/0 00:00:08 /usr/local/java/jdk1.8.0_11/bin/java -Djava.util.logging.config.file=/usr/local/tomcat-8.5.50/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat-8.5.50/bin/bootstrap.jar:/usr/local/tomcat-8.5.50/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat-8.5.50 -Dcatalina.home=/usr/local/tomcat-8.5.50 -Djava.io.tmpdir=/usr/local/tomcat-8.5.50/temp org.apache.catalina.startup.Bootstrap start
root 32290 6808 0 10:41 pts/0 00:00:00 grep --color=auto tomcat
浏览器访问地址:http://111.229.96.161:8080/javaTest.jsp
- 在Nginx上做负载均衡调度
[root@VM_0_12_centos agent]# vi 50000.port
server {
listen 50000;
server_name localhost;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
proxy_set_header Host $host:50000;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
location / {
root /var/local/static;
index index.html index.htm;
}
location ~* .*\.(jpg|png|gif|jpeg)$
{
root /var/local/static/images;
}
location ~ \.jsp {
proxy_pass http://javaweb;
proxy_set_header Host $http_host;
}
}
[root@VM_0_12_centos agent]# vi upstream.host
upstream javaweb {
server 111.229.96.161:8080;
}
浏览器访问地址:
- Nginx负载均衡整合动态和静态的html文件,在html文件中将动态资源和静态资源显示在同一个页面上。
[root@VM_0_12_centos static]# vi index.html
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>迟迟带你测试ajax和跨域访问</title>
<script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
</head>
<script type="text/javascript">
$(document).ready(function(){
$.ajax({
type: "GET",
url: "http://111.229.96.161:50000/javaTest.jsp",
success: function(data){
$("#chi_data").html(data)
},
error: function() {
alert("哎呦喂,失败了,回去检查你服务去~");
}
});
});
</script>
<body>
<h1>迟迟带你测试动静分离</h1>
<img src="http://111.229.96.161:50000/chichi.jpeg">
<div id="chi_data"></div>
</body>
</html>
后续继续更新。