大数据003——nginx

大数据003——nginx

1. 虚拟主机

虚拟主机是指在网络服务器上分出一定的磁盘空间,用户可以租用此部分空间,以供用户放置站点及应用组件,提供必要的数据存放和传输功能。

nginx可以配置基于域名和基于端口的虚拟主机:

1.1 基于域名的虚拟主机

编辑/usr/local/nginx/conf(注意是安装目录,非源码包目录)下的nginx.conf:

http { 
    upstream web01{ 
        server node02; 
	} 
	upstream web02{ 
        server node03; 
     } 
 server { 
        listen 80; 
	//访问mydomain1.com的时候,会把请求导到web01的服务器组里
	server_name  mydomain1.com;
        location / {
            proxy_pass http://web01;
        }
	} 
    server { 
        listen 80; 
	//访问mydomain2.com的时候,会把请求导到web02的服务器组里
	server_name  mydomain2.com; 
        location / {
            proxy_pass http://web02;
        }
	} 
}

基于域名的虚拟机主机 在模拟应用场景时,需要在windows系统的hosts文件里配置域名映射。

编辑C:\Windows\System32\drivers\etc\下的hosts文件:

192.168.142.11 mydomain1.com
192.168.142.11 mydomain2.com

注意:已在Linux虚拟机端/etc/下的hosts编辑:

192.168.142.11 node01
192.168.142.12 node02
192.168.142.13 node03

启动nginx后,分别访问mydomain1.com ,mydomain2.com
在这里插入图片描述
在这里插入图片描述

1.2 基于端口的虚拟主机

编辑/usr/local/nginx/conf(注意是安装目录,非源码包目录)下的nginx.conf:

http { 
    upstream web01{  
        server node02; 
	} 
	upstream web02{ 
        server node03
    } 
 server { 
//当访问nginx的80端口时,将请求导给bjsxt组
        listen 81; 
        server_name localhost;
        location / {
            proxy_pass http://web01;
        }
	} 
server { 
 //当访问nginx的81端口时,将请求导给shsxt组
        listen 82; 
        server_name localhost;
        location / {
            proxy_pass http://web02;
        }
	} 
}

启动nginx后,分别访问192.168.142.11(nginx服务器IP,也即node01)的81端口和82端口:
在这里插入图片描述
在这里插入图片描述

1.3 正向代理和反向代理

请自行理解。

1.4 Nginx的session的一致性问题

1. Session一致性解决方案

a. session复制, tomcat 本身带有复制session的功能。

b. 共享session, 需要专门管理session的软件,memcached 缓存服务,可以和tomcat整合,帮助tomcat共享管理session。

2. 安装memcached

  • 安装memcached内存数据库

    yum -y install memcached
    
  • web服务器连接memcached的jar包拷贝到tomcat的lib,本文用的是Tomcat7对应的jar包:
    在这里插入图片描述在这里插入图片描述

  • 配置tomcat的conf目录下的context.xml:

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
    <!--memcached所在虚拟机IP-->
    memcachedNodes="n1:192.168.xxx.xxx:11211"
    sticky="true"
    lockingMode="auto"
    sessionBackupAsync="false"
   requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" />

配置memcachedNodes属性,配置memcached数据库的ip和端口,默认11211,多个的话用逗号隔开。目的是为了让tomcat服务器从memcached缓存里面拿session或者是放session。

  • 修改index.jsp,取sessionid看一看:

    <%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>
    <html lang="en">
    SessionID:<%=session.getId()%>
    </br>
    SessionIP:<%=request.getServerName()%>
    </br>
    <h1>tomcat1</h1>
    </html>
    
  • 启动memcached:

    memcached -d -m 128m -p 11211 -l 192.168.xxx.xxx -u root -P /tmp/
    

访问不同Tomcat服务器:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sinat_34045444/article/details/85140169
003