高性能高可用方案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,如需转载请自行联系原作者

目录
相关文章
|
4月前
|
应用服务中间件 Linux 网络安全
使用Nginx免费版与Keepalived实现高可用性High Availablity方案
本文介绍了如何使用Nginx免费版与Keepalived实现高可用性(HA)方案,涵盖环境搭建、Keepalived安装配置、版本升级及主从模式设置。通过虚拟机测试,结合CentOS与宝塔,详细说明VIP配置与服务启动流程,助你构建稳定可靠的Web高可用架构。
|
5月前
|
JSON 前端开发 应用服务中间件
配置Nginx根据IP地址进行流量限制以及返回JSON格式数据的方案
最后,记得在任何生产环境部署之前,进行透彻测试以确保一切运转如预期。遵循这些战术,守卫你的网络城堡不再是难题。
252 3
|
负载均衡 监控 应用服务中间件
配置Nginx反向代理时如何指定后端服务器的权重?
配置Nginx反向代理时如何指定后端服务器的权重?
549 61
|
安全 应用服务中间件 网络安全
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
682 60
|
安全 应用服务中间件 网络安全
配置Nginx反向代理实现SSL加密访问的步骤是什么?
我们可以成功地配置 Nginx 反向代理实现 SSL 加密访问,为用户提供更安全、可靠的网络服务。同时,在实际应用中,还需要根据具体情况进行进一步的优化和调整,以满足不同的需求。SSL 加密是网络安全的重要保障,合理配置和维护是确保系统安全稳定运行的关键。
702 60
|
10月前
|
缓存 负载均衡 应用服务中间件
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇
通过使用Nginx的反向代理功能,可以有效地提高Web应用的性能、安全性和可扩展性。配置过程中需要注意不同场景下的具体需求,如负载均衡、SSL终止和缓存策略等。正确配置和优化Nginx反向代理可以显著提升系统的整体表现。
1644 20
|
11月前
|
缓存 Java 应用服务中间件
nginx的正向代理和反向代理以及tomcat
Nginx的正向代理和反向代理功能在不同的场景中具有重要作用,正向代理主要用于客户端访问控制和匿名浏览,而反向代理则用于负载均衡和高可用性服务。Tomcat作为Java Web应用服务器,与Nginx结合使用,可以显著提升Web应用的性能和稳定性。通过合理配置Nginx和Tomcat,可以构建高效、稳定和可扩展的Web服务架构。
437 11
|
11月前
|
存储 应用服务中间件 nginx
nginx反向代理bucket目录配置
该配置实现通过Nginx代理访问阿里云OSS存储桶中的图片资源。当用户访问代理域名下的图片URL(如 `http://代理域名/123.png`)时,Nginx会将请求转发到指定的OSS存储桶地址,并重写路径为 `/prod/files/2024/12/12/123.png`。
415 5
|
2月前
|
编解码 应用服务中间件 Linux
centos配置nginx-rtmp实现ffmpeg转码rtsp为rtmp视频流
centos配置nginx-rtmp实现ffmpeg转码rtsp为rtmp视频流
303 1
|
6月前
|
应用服务中间件 Linux 网络安全
Centos 8.0中Nginx配置文件和https正书添加配置
这是一份Nginx配置文件,包含HTTP与HTTPS服务设置。主要功能如下:1) 将HTTP(80端口)请求重定向至HTTPS(443端口),增强安全性;2) 配置SSL证书,支持TLSv1.1至TLSv1.3协议;3) 使用uWSGI与后端应用通信(如Django);4) 静态文件托管路径设为`/root/code/static/`;5) 定制错误页面(404、50x)。适用于Web应用部署场景。
721 87