高性能高可用方案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源:

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

2.2.2、step2

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

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

2.2.3、step3

创建程序目录:

1
2
3
4
5
6
7
8
  #创建程序目录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:

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

代码2:

1
       < /Host >

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

1
2
3
4
5
       <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>标签内部加入如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
   <!-开启第二个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服务:

1
/etc/init .d /tomcat6  restart

2.2.7、step7

防火墙配置:

vim编辑/etc/sysconfig/iptables

1
2
3
-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服务:

1
/etc/init .d /tomcat6  restart

2.2.8、step8

测试

In proxySer

Tomcat服务测试:

1
2
3
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源的安装

1
2
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{}内容全部清除,添加内容如下:

1
2
3
4
5
6
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;
 
}

增加缓存目录

1
mkdir  -p  /data/nginx/cache

清理默认配置:

1
2
mkdir  /etc/nginx/conf .d /backup
mv  /etc/nginx/conf .d /default .conf  /etc/nginx/conf .d /backup

增加代理服务器:

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

1
2
3
4
5
6
7
8
9
10
11
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

1
2
3
4
5
6
7
8
9
10
11
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

1
2
3
4
5
6
7
8
9
10
11
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服务并设置开机自启动

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

2.3.4、step4

防火墙配置:

vim编辑/etc/sysconfig/iptables

1
2
3
-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反向代理测试:

1
2
3
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









本文转自 tanzhenchao 51CTO博客,原文链接:http://blog.51cto.com/cmdschool/1703299,如需转载请自行联系原作者

目录
相关文章
|
2月前
|
负载均衡 应用服务中间件 Linux
高可用系列文章之三 - NGINX 高可用实施方案
高可用系列文章之三 - NGINX 高可用实施方案
|
3月前
|
缓存 负载均衡 应用服务中间件
高性能网络编程技术 Nginx 的概念与实践
Nginx 是一款高性能、轻量级的Web服务器和反向代理服务器,它在网络编程技术领域中被广泛应用。本文将详细介绍Nginx的概念和实践,包括其核心原理、功能特点、优势和应用场景等方面。同时,还将深入探讨如何使用Nginx进行高性能网络编程,结合实际案例进行分析。
|
3月前
|
JSON 应用服务中间件 API
利用Grafana的API Key+Nginx反向代理实现Grafana免登录访问
利用Grafana的API Key+Nginx反向代理实现Grafana免登录访问
87 1
|
11天前
|
应用服务中间件 nginx
nginx进行反向代理的配置
在Nginx中设置反向代理的步骤:编辑`/etc/nginx/nginx.conf`,在http段加入配置,创建一个监听80端口、服务器名为example.com的虚拟主机。通过`location /`将请求代理到本地3000端口,并设置代理头。保存配置后,使用`sudo nginx -s reload`重载服务。完成配置,通过example.com访问代理服务器。
18 0
|
1月前
|
负载均衡 应用服务中间件 Linux
|
2月前
|
tengine Rust 负载均衡
反向代理学习笔记(一) Nginx与反向代理绪论
反向代理学习笔记(一) Nginx与反向代理绪论
|
2月前
|
负载均衡 Java 应用服务中间件
|
2月前
|
消息中间件 关系型数据库 MySQL
使用Nginx的stream模块实现MySQL反向代理与RabbitMQ负载均衡
使用Nginx的stream模块实现MySQL反向代理与RabbitMQ负载均衡
60 0
|
3月前
|
缓存 负载均衡 应用服务中间件
高性能网络编程技术 Nginx 的概念与实践
在当今互联网时代,高性能网络编程技术越来越受到重视。Nginx 作为一款高性能、高可靠性的 Web 服务器,拥有广泛的应用和优异的性能表现。本文将介绍 Nginx 的基本概念、架构以及实践技巧,帮助读者更好地理解和使用这一工具。
|
3月前
|
应用服务中间件 nginx
4.5.1 Nginx反向代理与系统参数配置conf原理
4.5.1 Nginx反向代理与系统参数配置conf原理