本文概览:主要包括nginx介绍、安装和配置三个部分。

1 nginx介绍

1.1 引入

apache不具备高并发特性,所以为了适应高并发,引入了nginx。可以将nginx理解为高并发而生htpp服务器。nginx提供的两大功能:

  • 反向代理。关于反向代理百科定义:反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。所以通过反向代理可以实现将不同请求打到不同内部服务实例上。
  • 负载均衡。当nginx通过反向代理映射了很多服务器实例,可以保证每一个实例被均衡的调用。

1.2 比较tomcat

web最开始时,网站都是静态网站的,即都是html页面,通过apache服务器来访问这些静态资源。nginx和apache一样,也是静态网站http服务器。后来动态网站开始兴起,以javaservletjspspring mvc等这些是动态生成html页面的,显然nginxapache都是不支持的,这就是tomcat作用了,它即可以动态生成html页面,也可以实现http服务器的功能。所以:

  • nginxapache都是面向静态网站http服务器
  • tomcat是面向动态网站http服务器,即可以动态生成html页面,也实现了静态网站的http服务器的功能。tomcat面向java动态网站,对于动态网站实现还有phpc#.net等,目前主流是java webphp,其中java web更适合企业级部署,这是因为:开发时,有很多开源成熟的框架(zookeeperdubooeshadoopspring等)可以使用,避免了重复造轮子,节约开发成本且又具有高质,所以开发成本比较低且服务稳定,比较适合企业。

1.3 主流选择

对于java web ,目前主流服务器架构就是 tomcat + nginx

2 安装nginx

1、执行命令

  • 安装目录 /usr/local/Cellar/nginx,即nginx的文件都在这个目录下面,可以类比tomcat解压之后目录。
  • 配置文件的目录 /usr/local/etc/nginx,如nginx.conf等文件。
  • 命令脚本 /usr/local/bin/nginx

2、启动服务

通过如下命令

也可以通过“-c”指定配置文件,如下

启动之后,可以查看进程如下:

访问 http://localhost:8080/ ,如下图:

85284598

3、关闭服务

或者

4、重载

修改配置之后,希望在关闭服务器的情况下,重新加载配置,通过如下命令

3 配置nginx.conf

nginx的配置都是通过nginx.conf文件来实现的。nginx.conf文件由模块(模块成员可以是模块或者属性关键字)和属性关键字来组成,常用模块有全局、events、http(包含upstream、server、location等子模块)三个模块。nginx.conf文件模板如下:

本节中只使用http模块来配置反向代理到两个不同tomcat实例和负载均衡(代理到相同服务的tomcat实例,可以能端口号相同,也可能不同)。

3.1 通过URL代理到不同服务

之前在CRM系统中,合同系统和商户系统就是通过这个方式划分,即crm.com/ct/queryCt会映射到合同服务的queryCt接口,如127.0.0.1:8088/queryCt;crm.com/customer/queryHotel会映射到商户服务的queryHotlel接口,如127.0.0.1:8099/queryHotel。对于将对外服务按功能划分成多个服务模块时,可以选择这种方式。

1、将/usr/local/etc/nginx下面文件拷贝到~/tmp目录下面,并修改nginx.conf内容如下

2、解压tomcat,分别命名为tomcat-customer,tomcat-ct

(1)对于tomcat-customer

  • 修改server.xml中端口号为8099

  • 在root目录下,创建ct目录,增加queryCutomer.html。

(2)对于tomcat-ct

  • 修改server.xml端口号为8098

  • 在root目录下,创建ct目录,增加queryCustomer.html。

3、启动nginx

4、启动tomcat

5、在/etc/hosts目录下配置如下

6、验证

(1)输入www.crm.com/ct/queryCt.html,如下

50222785

(2)输入localhost/customer/queryCustomer.html如下

50388408

6、参数说明

  • server:表示的是虚拟主机。server_name可以是一个IP或者域名。可以配置多个server,如一个服务有多个域名时,就可以配置多个server{},每一个server中server_name设置一个域名,即可以把server当成客户端看到域名或者IP:端口,如对于crm.com,可能最后根据不同url会调用不同服务,但是对用户只看到www.crm.com这一个域名。
  • location:请求url,可以是正则。

3.2 负载均衡

当一个服务部署了多个tomcat实例,那么需要进行负载均衡设置。通过upstream{}来实现。比如对于www.licai.com 需要部署两个实例tomcat1和tomcat2。具体步骤如下

1、解压tomcat,分别命名为tomcat1,tomcat2

(1)对于tomcat1

  • 修改server.xml中端口号为8091

  • 在root目录下,增加query.html。

(2)对于tomcat2

  • 修改server.xml端口号为8092

  • 在root目录下,增加query.html。

2、nginx.conf进行如下配置

3、启动nginx

4、启动tomcat

5、在/etc/hosts目录下配置如下

6、输入网址  http://www.licai.com:8095/query.html

有的请求会打到实例1,有的会打到实例2,如下:

  • 如下访问到实例1

Snip20170829_10

  • 如下访问到实例2

Snip20170829_11

(全文完)

分类&标签

发表评论

电子邮件地址不会被公开。 必填项已用*标注