发表于: 2016-09-28 10:39:01
1 2201
一、今天完成
1.阅读《深入理解nginx模块开发与架构解析》的第2章,了解nginx做负载均衡+反向代理相关知识,在nginx.conf中添加相应设置,log4j排查问题,访问http://www.oyyd.org/xiuzhenyuan/find/18725966666 跟 http://192.168.1.222:8080/xiuzhenyuan/find/18725966666 取得相同效果。
http{
.....
upstream aaa{
server 127.0.0.1:8080;
}
server {
listen 80;
server_name www.oyyd.org;
location / {
proxy_pass http://aaa;
}
}
}
重启nginx
/etc/init.d/nginx restart
二、明天计划
1.赶进度学习task4相关知识,并开始动手。
2.了解下github托管代码
三、遇到问题
1.通过反向代理www.oyyd.org替代192.168.1.222:8080访问jetty服务的所在,http://www.oyyd.org/xiuzhenyuan/find/187259666666,并没有正常的返回查询结果,晓静师姐指示查询日志并介绍了下tail -200f 这种专门查询日志的方法。
2.log4j的配置文件及ubuntu文件夹访问权限导致日志没能记录完整的访问信息。
ubuntu文件夹访问权限:chmod -R 777 文件夹
log4j的配置:
# Root logger option
log4j.rootLogger=DEBUG,stdout,W,file
# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# Redirect log messages to a log file
log4j.appender.file=org.apache.log4j.FileAppender
#outputs to Tomcat home
log4j.appender.file.File=/data/webs/learn-admin-web/logs/file.log
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.Append=true
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
四、收获
1.什么是nginx?
类比apache、jetty的跨平台web服务器
2.为什么要在jetty的基础上加nginx做子域访问
高并发情况下,jetty会对web系统形成软件瓶颈。
nginx是事件驱动设计,全异步网络I/O处理机制。性能消耗比其他web服务器低很多,使单机支持10万并发访问。整合后几乎抵消web系统的软件部分瓶颈。
3.DNS(Domain Name Service)相关知识
DNS工作原理:DNS域名服务器其实就是个分布式数据库,它主要提供规范的FQDN到IP地址的解析,反之亦然。
构成全世界DNS系统的是一个分布式数据库,每个站点都维护着这个数据库的一个或者多个组成部分。


说明:在此查询之前,ns.fin.example.com服务器没有相关的缓存记录,并且本地缓存文件也没有相关的www.fin.example.com的相关记录。
本地域名服务器是一台递归服务器,当它第一次发送查询请求时,得到的是推荐DNS服务器地址,则本地DNS服务器去新的DNS服务器发出查询请求,然后再去得到推荐的DNS服务发送请求,直到找到相应的主机记录为止。
查询流程详解:
<1>所以当sandy用户查询www.fin.example.com这台主机的相关记录,它首先去本地(/etc/hosts)查询有没有相关的记录,有则返回结果,
没有则去本地DNS服务器(ns.fin.example.com)发送请求。
<2>本地域名服务器(ns.fin.example.com)查询缓存发现没sandy用户查询的相关记录,所以它去根服务器查询fin.example.com的相关记录,并得到一个推荐的DNS服务器的地址(.com)
<3>然后本地域名服务去com域名服务器查询(fin.example.com)的相关记录,并得到了关于exampl.com域服务器地址,然后本地域名服务向example.com发送查询请求,example.com域名服务器查询缓存没有相应的答案,则推荐到fin.example.com域名服务器去查询,对于查询域名信息来说,fin.example.com的域名则是权威的,它在自己的管辖内找到www这台主机,然后用www这台主机的地址回复本地域名服务器(ns.fin.example.com)。
<4>本地域名服务器(ns.fin.example.com)得到了关于www.fin.example.com的主机记录,并将记录到缓存区域,然后发送给sandy用户。
<5>下次再有用户查询www.fin.example.com主机信息时,本地域名服务器直接从缓存中调用此记录即可。
4.正/反代理


负载均衡的反向代理


5.因为ip数量有限,经常存在多个主机域名对应着同一个IP,nginx可以通过虚拟主机配置支撑这种 多主机域名-单ip 的情况。
评论