高性能高可用方案Nginx (二)Reverse Proxy(反向代理)

1、理论部分

wKiom1YgLReCvsB4AACulHM86BU356.jpg

1.1、Reverse Proxy概念

是指以代理服务器来接受internet上的请求,然后将请求转发给内部网络上的服务器,并将服务器上得到的结果返回给internet上的请求连接客户端。

1.2、Reverse Proxy的工作流程

wKioL1YgMmbiXxePAAD3CpjCI_g582.jpg

1)客户端发出访问请求到Reverse Proxy服务器

2)Reverse Proxy服务器经过防火墙的特定通路,将请求转发到内容服务器

3)内容服务器将返回结果经过原通道返回给Reverse Proxy服务器

4)Reverse Proxy将检索到的信息发送给客户端。

注意:如果内容服务器返回错误消息,代理服务器会先行截取该消息并更改标头中列出的任何 URL,然后再将消息发送给客户机。如此可防止外部客户机获取内部内容服务器的重定向 URL。

1.3、Reverse Proxy的特征

1)Reverse Proxy对外表现为一台Web服务器而不需要特定的Web服务器配置

2)Reverse Proxy服务器不储存任何网页真实数据,所有的静态页面或者CGI程序,都存于内部Web服务器上。

1.4、Reverse Proxy的作用

1)增加服务器的安全性

2)提高服务的访问性能

1.5、Reverse Proxy的分类

1)普通反向代理

2)安全反向代理 - 使用安全套接字(SSL)协议加密

1.6、Reverse Proxy的应用场景

CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置反向代理节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。

2、实验部分

2.1、实验基础信息

服务器信息:

proxySer:

ip address=10.168.0.185

hostname=proxySer

tomcatSer:

ip address=10.168.0.188

hostname=tomcatSer

client:

ipaddress=10.168.0.8

hostname=client

2.2、tomcat的安装和配置

In TomcatSer

2.2.1、step1

安装yum源:

yum install tomcat6 tomcat6-webapps tomcat6-admin-webapps tomcat6-docs-webapp tomcat6-javadoc java-1.7.0-openjdk

2.2.2、step2

启动tomcat服务和设置开机自启动:

/etc/init.d/tomcat6 start
 chkconfig tomcat6 on

2.2.3、step3

创建程序目录:

 #创建程序目录1
 mkdir -p /home/wwwroot/w1.cmdschool.org
 chown root:tomcat /home/wwwroot/w1.cmdschool.org
 echo w1.cmdschool.org > /home/wwwroot/w1.cmdschool.org/index.html
 #创建程序目录2
 mkdir -p /home/wwwroot/w2.cmdschool.org
 chown root:tomcat /home/wwwroot/w2.cmdschool.org
 echo w2.cmdschool.org > /home/wwwroot/w1.cmdschoo2.org/index.html

2.2.4、step4

创建虚拟服务器:

用<!---->注解掉以下代码:

代码1:

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

代码2:

      </Host>

新开一行并创建于<Host ...></Host>下面

      <Host name="localhost" appBase="/home/wwwroot/w1.cmdschool.org"
       unpackWARs="false" autoDeploy="true" xmlValidation="false"
       xmlNamespaceAware="false">
      <Context path="" docBase="." debug="0" reloadable="true" crossContext="true"/>
      </Host>

2.2.5、step5

开启多tomcat同时工作的模式:

于<Server ..></Server>标签内部加入如下代码:

  <!-开启第二个tomcat->
  <Service name="Catalina8081">
    <Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="Catalina8081" defaultHost="localhost">
      <Host name="localhost" appBase="/home/wwwroot/w2.cmdschool.org"
       unpackWARs="false" autoDeploy="true" xmlValidation="false"
       xmlNamespaceAware="false">
      <Context path="" docBase="." debug="0" reloadable="true" crossContext="true"/>
      </Host>
    </Engine>
  </Service>
  
  <!-开启第三个tomcat->
  <Service name="Catalina8082">
    <Connector port="8082" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8011" protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="Catalina8081" defaultHost="localhost">
      <Host name="localhost" appBase="/home/wwwroot/w2.cmdschool.org"
       unpackWARs="false" autoDeploy="true" xmlValidation="false"
       xmlNamespaceAware="false">
      <Context path="" docBase="." debug="0" reloadable="true" crossContext="true"/>
      </Host>
    </Engine>
  </Service>

2.2.6、step6

重启tomcat服务:

/etc/init.d/tomcat6 restart

2.2.7、step7

防火墙配置:

vim编辑/etc/sysconfig/iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8082 -j ACCEPT

重启tomcat服务:

/etc/init.d/tomcat6 restart

2.2.8、step8

测试

In proxySer

Tomcat服务测试:

curl http://10.168.0.188:8080
curl http://10.168.0.188:8081
curl http://10.168.0.188:8082

2.3、nginx的安装和配置

In proxySer:

2.3.1、step1

yum源的安装

yum -y install http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
yum -y install nginx

2.3.2、step2

vim编辑/etc/nginx/nginx.conf

把原来的http{}内容全部清除,添加内容如下:

http {
    proxy_cache_path  /data/nginx/cache  levels=1:2    keys_zone=STATIC:10m
    inactive=24h  max_size=1g;
    include /etc/nginx/conf.d/*.conf;

}

增加缓存目录

mkdir -p /data/nginx/cache

增加代理服务器:

vim编辑/etc/nginx/conf.d/w1.cmdschool.org.conf

server {
    listen 81;
    location / {
        proxy_pass             http://10.168.0.188:8080;
        proxy_set_header       Host $host;
        proxy_cache            STATIC;
        proxy_cache_valid      200  1d;
        proxy_cache_use_stale  error timeout invalid_header updating
                                   http_500 http_502 http_503 http_504;
    }
}

vim编辑/etc/nginx/conf.d/w2.cmdschool.org.conf

server {
    listen 82;
    location / {
        proxy_pass             http://10.168.0.188:8081;
        proxy_set_header       Host $host;
        proxy_cache            STATIC;
        proxy_cache_valid      200  1d;
        proxy_cache_use_stale  error timeout invalid_header updating
                                   http_500 http_502 http_503 http_504;
    }
}

vim编辑/etc/nginx/conf.d/w2.cmdschool.org.conf

server {
    listen 83;
    location / {
        proxy_pass             http://10.168.0.188:8082;
        proxy_set_header       Host $host;
        proxy_cache            STATIC;
        proxy_cache_valid      200  1d;
        proxy_cache_use_stale  error timeout invalid_header updating
                                   http_500 http_502 http_503 http_504;
    }
}


2.3.3、step3

启动nginx服务并设置开机自启动

/etc/init.d/nginx start
chkconfig nginx on

2.3.4、step4

防火墙配置:

vim编辑/etc/sysconfig/iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 81 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 82 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 83 -j ACCEPT

In clentSer:

2.3.5、step5

nginx反向代理测试:

curl http://10.168.0.185:81
curl http://10.168.0.185:82
curl http://10.168.0.185:83

----------------------------------------------------------

理论部分参阅资料:

1)官方:

http://www.nginx.org

2)Tengine:

http://tengine.taobao.org


实验部分参阅资料:

1)Nginx官方下载路径:

http://nginx.org/en/download.html

2)多端口监听的配置:

http://linder.iteye.com/blog/782071


你可能感兴趣的:(nginx,环境,反向代理)