1. 正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。
访问google使用代理服务器
2. 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器
代理访问自己的内部服务器
或者看下图:
总结
正向代理即是客户端代理, 代理客户端, 服务端不知道实际发起请求的客户端.反向代理即是服务端代理, 代理服务端, 客户端不知道实际提供服务的服务端
正向代理中,proxy和client同属一个LAN,对server透明; 反向代理中,proxy和server同属一个LAN,对client透明。 实际上proxy在两种代理中做的事都是代为收发请求和响应,不过从结构上来看正好左右互换了下,所以把后出现的那种代理方式叫成了反向代理
正向代理: 买票的黄牛 反向代理: 租房的代理
Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(location是Nginx配置中的一个指令,用于URL匹配),而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。
Nginx的模块从结构上分为核心模块、基础模块和第三方模块: 核心模块:HTTP模块、EVENT模块和MAIL模块 基础模块:HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块, 第三方模块:HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块。
Nginx的高并发得益于其采用了epoll模型,与传统的服务器程序架构不同,epoll是linux内核2.6以后才出现的。Nginx采用epoll模型,异步非阻塞,而apache采用的是select模型: Select特点:select 选择句柄的时候,是遍历所有句柄,也就是说句柄有事件响应时,select需要遍历所有句柄才能获取到哪些句柄有事件通知,因此效率是非常低。 epoll的特点:epoll对于句柄事件的选择不是遍历的,是事件响应的,就是句柄上事件来就马上选择出来,不需要遍历整个句柄链表,因此效率非常高。
Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名
常见的应用服务器: Apache/Microsoft IIS/Tomcat/Lighttpd/Nginx
特点:Nginx特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好
组成:Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单
核心模块:HTTP模块、EVENT模块和MAIL模块 基础模块:HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块, 第三方模块:HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块。
1)高并发响应性能非常好,官方Nginx处理静态文件并发5w/s 2)反向代理性能非常强。(可用于负载均衡) 3)内存和cpu占用率低。(为Apache的1/5-1/10) 4)对后端服务有健康检查功能。 5)支持PHP cgi方式和fastcgi方式。 6)配置代码简洁且容易上手。
说明:处理静态文件是nginx最主要的功能
4.1、编译环境gcc g++ 开发库之类的需要提前装好
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
4.2、首先安装PCRE pcre功能是让nginx有rewrite功能
检查系统里是否安装了pcre软件
rpm -qa pcre 如果没有显示说明没有安装 反之安装过
rpm -e --nodeps pcre 删除pcre
安装pcre:yum install pcre-devel pcre -y
4.3、nginx安装
#下载Nginx源码包
cd /usr/local wget http://nginx.org/download/nginx-1.9.0.tar.gz
#解压Nginx源码包
tar -zxvf nginx-1.9.0.tar.gz
#进入解压目录,开始安装,默认安装地址 /usr/local/nginx
cd nginx-1.9.0 https://blog.csdn.net/u011323949/article/details/configure --prefix=/usr/local/nginx --with-http_ssl_module &&make &&make install
#自此Nginx安装完毕 检查nginx配置文件是否正确,返回OK即正确。 /usr/local/nginx/sbin/nginx -t
#然后启动nginx, /usr/local/nginx/sbin/nginx 回车即可。 #查看进程是否已启动: ps aux |grep nginx
4.4 页面访问
4.5 卸载nginx
删除nginx文件即可
rm -rf /usr/local/nginx
查看nginx进程: ps -ef|grep nginx或者ps aux |grep nginx 说明:nginx的进程由主进程和工作进程组成。
启动nginx: /usr/local/nginx/sbin/nginx 说明:启动结果显示nginx的主线程和工作线程,工作线程的数量跟nginx.conf中的配置参数worker_processes有关。
平滑启动nginx: kill -HUP 'cat /var/run/nginx.pid' 或者 /usr/local/nginx/sbin/nginx -s reload 其中进程文件路径在配置文件nginx.conf中可以找到。 平滑启动的意思是在不停止nginx的情况下,重启nginx,重新加载配置文件,启动新的工作线程,完美停止旧的工作线程。
完美停止nginx: kill -QUIT 'cat /var/run/nginx.pid'
快速停止nginx : kill -TERM 'cat /var/run/nginx.pid' 或者 kill -INT `cat /var/run/nginx.pid` 完美停止工作进程(主要用于平滑升级): kill -WINCH 'cat /var/run/nginx.pid'
强制停止nginx: pkill -9 nginx
检查对nginx.conf文件的修改是否正确: nginx -t -c /etc/nginx/nginx.conf 或者 /usr/local/nginx/sbin/nginx -t
停止nginx的命令: /usr/local/nginx/sbin/nginx -s stop
查看nginx的版本信息: /usr/local/nginx/sbin/nginx -v
查看完整的nginx的配置信息: /usr/local/nginx/sbin/nginx -V
下载所需版本的Nginx: wget http://www.nginx.org/download/nginx-1.4.2.tar.gz
获取旧版本nginx的configure选项: /usr/local/nginx/sbin/nginx -V 编译新版本的nginx tar -xvf nginx-1.4.2.tar.gz cd nginx-1.4.2 https://blog.csdn.net/u011323949/article/details/configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module make
备份旧版本的nginx可执行文件,复制新版本的nginx可执行文件: mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old cp objs/nginx /usr/local/nginx/sbin/
测试新版本nginx是否正常: /usr/local/nginx/sbin/nginx -t
平滑重启升级nginx: kill –USR2 `cat /usr/local/nginx/log/nginx.pid` 旧版本Nginx的pid变为oldbin,这是旧版本和新版本的nginx同时运行,过一段时间等旧nginx处理完用户请求后,执行下面操作 从容关闭旧版本的Nginx进程 kill -WINCH `cat /usr/local/nginx/log/nginx.oldbin`
决定是否升级到新版的nginx: kill –HUP `cat /usr/local/nginx/log/nginx.oldbin` ##nginx在不重载配置文件启动工作进程 kill –QUIT `cat /usr/local/nginx/log/nginx.oldbin` ##关闭旧版nginx 验证nginx是否升级成功 /usr/local/nginx/sbin/nginx –V ###显示下图则升级成功
说明:
在nginx的nginx.conf里面监听80端口,并配置后端tomcat的地址,前端访问的时候即可转发到后端的tomcat
2.1 准备两个端口不一样的Apache分别为8080,8081