大数据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服务器: