javaWeb-4 Nginx
Nginx概述Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。20...
-
Nginx概述
Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向
代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
-
Nginx优点
Nginx 可以在大多数 UnixLinux OS 上编译运行,并有 Windows 移植版。 Nginx 的1.4.0稳定版已经于2013年4月24日发布,一般情况下,对于新建站点,建议使用最新稳定版作为生产版本,已有站点的升级急迫性不高。Nginx 的源代码使用 2-clause BSD-like license。
Nginx 是一个很强大的高性能Web和反向代理服务器,它具有很多非常优越的特性:
在连接高并发的情况下,Nginx是Apache服务器不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型。
-
为什么使用Nginx
互联网飞速发展的今天,大用户量高并发已经成为互联网的主体.怎样能让一个网站能够承载几万个或几十万个用户的持续访问呢?这是一些中小网站急需解决的问题。用单机tomcat搭建的网站,在比较理想的状态下能够承受的并发访问量在150到200左右。按照并发访问量占总用户数量的5%到10%这样计算,单点tomcat网站的用户人数在1500到4000左右。对于一个为全国范围提供服务的网站显然是不够用的,为了解决这个问题引入了负载均衡方法。负载均衡就是一个web服务器解决不了的问题可以通过多个web服务器来平均分担压力来解决,并发过来的请求被平均分配到多个后台web服务器来处理,这样压力就被分解开来。
负载均衡服务器分为两种:一种是通过硬件实现的负载均衡服务器,简称硬负载例如:f5。另一种是通过软件来实现的负载均衡,简称软负载:例如apache和nginx。硬负载和软负载相比前者作用的网络层次比较多可以作用到socket接口的数据链路层对发出的请求进行分组转发但是价格成本比较贵,而软负载作用的层次在http协议层之上可以对http请求进行分组转发并且因为是开源的所以几乎是0成本,并且阿里巴巴,京东等电商网站使用的都是Nginx服务器。
-
Nginx应用场景
- http服务器,可以做静态网页的http服务器。
- 配置虚拟机。一个域名可以被多个ip绑定。可以根据域名的不同请求转发给运行在不同端口的服务器。
- 反向代理,负载均衡。把请求转发给不同的服务器。
- 正向代理它隐藏了客户端
- 反向代理它隐藏是服务器端
-
Nginx安装
- Nginx下载: http://nginx.org/
Nginx在windows下安装
双击nginx.exe,在浏览器中访问localhost:80
注意: nginx目录不能包含中文
-
Nginx在linux下安装
- Nginx在linux下安装: nginx是C语言开发,建议在linux上运行,本教程使用Centos6.4作为安装环境。
- gcc
安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:
yum install gcc-c++
- PCRE
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。
yum install -y pcre pcre-devel
注:pcre-devel是使用pcre开发的一个二次开发库。nginx也需要此库。
- zlib
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
yum install -y zlib zlib-devel
- openssl
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
yum install -y openssl openssl-devel
- 编译及安装
第一步:把nginx的源码包上传至linux服务器
第二步:解压源码包。 tar -zxf nginx-1.8.0.tar.gz
第三步:进入nginx-1.8.0文件夹。使用configure命令创建makefile。
第四步:参数设置如下:
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
注意:上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录
第五步:make
第六步 make install
以上操作完成后,进入/usr/local/nginx目录
- conf它里面装入的是nginx相关的配置文件
- html目录 它里面装入的html代码
- sbin目录它里面有一个nginx
- 想要启动nginx只需要执行bin目录下的nginx命令就可以
Nginx服务在启动时会启动两个服务
-
Nginx常用命令
- 关闭nginx需要使用:
nginx -s stop 相当于找到nginx进程kill。
- 退出命令:
nginx -s quit
等程序执行完毕后关闭,建议使用此命令。
- 重新加载配置文件:
nginx -s reload 可以不关闭nginx的情况下更新配置文件.
-
Nginx配置与应用
主要是在描述nginx它是一个http服务器。它是apache的一个替代品。
对于nginx虚拟机配置主要可以从三个方面入手:
- ip配置
- 域名配置
- 端口配置
它的配置主要体现在nginx/conf/nginx.conf
- 测试针对ip地址进行配置
- 测试针对于域名进行配置
域名作用:可以方便记忆。
问题:为什么通过域名可以访问到网站。
DNS服务器----域名解析服务器。
- 测试针对于端口进行配置
-
Nginx反向代理
tomcat页面
nginx页面
完成简单的tomcat集群:
修改第二个tomcat的server.xml里面的端口,统一为所有端口号加一
注意:还需修改 /bin/startup.bat 在第一行加入第二个tomcat的文件路径:
set CATALINA_HOME="E:\software\apache-tomcat-8.5.49-back"
-
Nginx负载均衡
所谓的负载均衡简单说就是将一台服务原来承受的压力由多台服务器来分配,可以在nginx中实现tomcat集群,通过weight来分配权重。
nginx页面:
-
Nginx+tomcat集群+redis实现session共享
问题:多个tomcat服务器,同一个用户session不一致
Session共享问题演示
- 在tomcat中创建项目myweb
- 分别启动两个tomcat,查看sessionid值
- Session共享问题解决
原理:将原来由每一个tomcat管理的session统一存储到redis中管理
下载nginx+tomcat集群+redis实现session共享工具包
https://github.com/jcoleman/tomcat-redis-session-manager/downloads
其它依赖包
将以上四个包copy到tomcat的lib目录下(集群中的所有Tomcat都需要有这四个jar)
在tomcat/conf/context.xml文件中添加配置(集群中的所有Tomcat都需要配置)
<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve"/>
<Manager className="com.radiadesign.catalina.session.RedisSessionManager"
host="localhost"
port="6379"
database="0"
maxInactiveInterval="60"
password="123456"
/>
- 查看myweb工具中sessionid
Redis帮助我们存储了session
更多推荐
所有评论(0)