Nginx✧虚拟主机&资源静态化

Posted 每日小新

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx✧虚拟主机&资源静态化相关的知识,希望对你有一定的参考价值。

🍄nginx✧虚拟主机&资源静态化

此篇主要是资源静态化和虚拟主机的配置使用,最好先看一下基础篇(文尾有壁纸~)



一、🍓负载策略的几种配置(常用命令)

四种负载均衡均衡配置直接再conf/nginx.conf文件内进行修改添加即可

1、轮询模式(默认)

upstream bdp 
      server 192.168.168.101:8080;
      server 192.168.168.102:8080;
      server 192.168.168.103:8080;
    

2、权重模式

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;
    

3、最少连接数

upstream bdpleast 
      least_conn;
      server 192.168.168.101:8080;
      server 192.168.168.103:8080;
      server 192.168.168.102:8080;
    

4、IpHash

upstream bdphash 
      ip_hash;
      server 192.168.168.101:8080;
      server 192.168.168.103:8080;
      server 192.168.168.102:8080;
    


5、常用命令

关闭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下管理,大的文件直接通过图床管理,准备两张图片测试。


1、配置Nginx服务器

准备静态资源

#再nginx目录html下创建static文件夹
mkdir static
#将小资源图片上传statci内
rz

修改配置config

#再server中添加内容:
server 
       location ^~ /static/ 
           root html;
       
   	

2、配置Tomcat服务器

图床,直接使用线上的一个图床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>


3、测试



三、🍓虚拟主机

虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成多台“虚拟”的主
机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Intemet服务器功
能(WWW、FTP、Email等),同一台主机上的虚拟主机之间是完全独立的。从网站访问者来看,
每一台虚拟主机和一台独立的主机完全一样。
-分类
–1、基于域名的虚拟主机,通过域名来区分虚拟主机
–2、基于端口的虚拟主机,通过端口来区分虚拟主机
(这里对node1~3上的tomcat服务器进行复制,每个node上有两台,具体复制tomcat再基础篇有教程


1、修改windons的hosts文件

修改Window的 C:\\Windows\\System32\\drivers\\etc\\hosts 文件

//添加内容
192.168.168.100 www.fxhh.com
192.168.168.100 www.miaosha.com

2、修改Nginx配置文件

	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反向代理,直接实现基于域名的虚拟主机


3、 基于端口

修改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的跟踪机制,session存放cookie中,具体原理如下图。故此我们使用一个独立的存储器来存放session,内存数据库 memcached 来存储


1、安装并启动

#内存数据库
#安装数据库
yum install memcached -y
#开启数据库服务
systemctl status memcached
systemctl start memcached
systemctl enable memcached
#查看配置
vim /etc/sysconfig/memcached

2、修改tomcat

#拷贝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" />
#重启服务器即可实现

完工~~



以上是关于Nginx✧虚拟主机&资源静态化的主要内容,如果未能解决你的问题,请参考以下文章

nginx 配置静态资源

通过nginx服务器访问静态资源

通过nginx服务器访问静态资源

线程化时访问静态地图时发生故障。

Nginx 动静分离

Nginx配置静态资源缓存时间及实现防盗链