此篇主要是资源静态化和虚拟主机的配置使用,最好先看一下基础篇(文尾有壁纸~)
四种负载均衡均衡配置直接再conf/nginx.conf文件内进行修改添加即可
upstream bdp {
server 192.168.168.101:8080;
server 192.168.168.102:8080;
server 192.168.168.103:8080;
}
upstream bdpweight {
server 192.168.168.101:8080 weight=4;
server 192.168.168.103:8080 weight=1;
server 192.168.168.102:8080 weight=1;
}
upstream bdpleast {
least_conn;
server 192.168.168.101:8080;
server 192.168.168.103:8080;
server 192.168.168.102:8080;
}
upstream bdphash {
ip_hash;
server 192.168.168.101:8080;
server 192.168.168.103:8080;
server 192.168.168.102:8080;
}
关闭nginx服务
kill `cat /usr/local/nginx/logs/nginx.pid`
nginx -s reload :修改配置后重新加载生效
nginx -s reopen :重新打开日志文件
nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确
关闭nginx:
nginx -s stop :快速停止nginx
quit :完整有序的停止nginx
其他的停止nginx 方式:
ps -ef | grep nginx
kill -QUIT 主进程号 :从容停止Nginx
kill -TERM 主进程号 :快速停止Nginx
pkill -9 nginx :强制停止Nginx
启动nginx:
nginx -c /path/to/nginx.conf
平滑重启nginx:
kill -HUP 主进程号
提前准备四台虚拟机,basenode,node1,node2,node3,basenode作为nginx代理服务器,node1~3作为三台tomcat服务器,将静态文件小的直接由nginx下管理,大的文件直接通过图床管理,准备两张图片测试。
准备静态资源
#再nginx目录html下创建static文件夹
mkdir static
#将小资源图片上传statci内
rz
修改配置config
#再server中添加内容:
server {
location ^~ /static/ {
root html;
}
}
图床,直接使用线上的一个图床https://imgurl.org/
三台一起操作更方便
修改apache-tomcat-8080/webapps/ROOT/index.js文件
<body>
<h1>welcome to 斗鱼直播h1>
<h2>Server:<%=request.getLocalAddr() %>h2>
<h2>Port:<%=request.getLocalPort() %>h2>
<h2>Client:<%=request.getRemoteAddr() %>h2>
<!--图床生成的图片链接--/>
<img src = 'https://s3.bmp.ovh/imgs/2021/10/0935f78b61223238.jpg' />
<!--nginx的static图片链接--/>
<img width="200px" src="/static/test4.jpg" />
body>
虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成多台“虚拟”的主
机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Intemet服务器功
能(WWW、FTP、Email等),同一台主机上的虚拟主机之间是完全独立的。从网站访问者来看,
每一台虚拟主机和一台独立的主机完全一样。
-分类
–1、基于域名的虚拟主机,通过域名来区分虚拟主机
–2、基于端口的虚拟主机,通过端口来区分虚拟主机
(这里对node1~3上的tomcat服务器进行复制,每个node上有两台,具体复制tomcat再基础篇有教程)
修改Window的 C:\Windows\System32\drivers\etc\hosts 文件
//添加内容
192.168.168.100 www.fxhh.com
192.168.168.100 www.miaosha.com
upstream miaosha {
server 192.168.168.101:8080;
server 192.168.168.102:8080;
server 192.168.168.103:8080;
}
upstream fxhh {
server 192.168.168.101:18080;
server 192.168.168.102:18080;
server 192.168.168.103:18080;
}
server {
listen 80;
server_name www.miaosha.com;
location / {
proxy_pass http://miaosha;
}
}
server {
listen 80;
server_name www.fxhh.com;
location / {
proxy_pass http://fxhh;
}
}
重启nginx和tomcat进行测试
通过配置域名+nginx反向代理,直接实现基于域名的虚拟主机
修改Window的 C:\Windows\System32\drivers\etchosts 文件
192.168.168.100 www.bdp.com
修改Nginx配置文件
http {
upstream port12345 {
server 192.168.168.101:8080;
server 192.168.168.102:8080;
server 192.168.168.103:8080;
}
upstream port54321 {
server 192.168.168.101:18080;
server 192.168.168.102:18080;
server 192.168.168.103:18080;
}
server {
listen 12345;
server_name www.bdp.com;
location / {
proxy_pass http://port12345;
}
}
server {
listen 54321;
server_name www.bdp.com;
location / {
proxy_pass http://port54321;
}
}
}
基于端口虚拟主机修改以上内容即可实现,一个监听端口一个监听域名
首先我们要明白session的跟踪机制,session存放cookie中,具体原理如下图。故此我们使用一个独立的存储器来存放session,内存数据库 memcached 来存储
#内存数据库
#安装数据库
yum install memcached -y
#开启数据库服务
systemctl status memcached
systemctl start memcached
systemctl enable memcached
#查看配置
vim /etc/sysconfig/memcached
#拷贝jar包到当前服务器lib目录下
#要注意memcached的版本
#如果一个机器有多个tomcat都需要session一致配置
tomcat/conf/server.xml
#相同项目如果想共享session,需要把jvmRoute命名一致
#如果你只有一个tomcat,忽略此步骤
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm18080">
</Engine>
#配置 tomcat/conf/context.xml
<Manager
className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.88.100:11211"
sticky="true"
lockingMode="auto"
sessionBackupAsync="false"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
sessionBackupTimeout="1000"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoT
ranscoderFactory" />
#重启服务器即可实现
完工~~