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

目录
相关文章
|
应用服务中间件 Linux 网络安全
使用Nginx免费版与Keepalived实现高可用性High Availablity方案
本文介绍了如何使用Nginx免费版与Keepalived实现高可用性(HA)方案,涵盖环境搭建、Keepalived安装配置、版本升级及主从模式设置。通过虚拟机测试,结合CentOS与宝塔,详细说明VIP配置与服务启动流程,助你构建稳定可靠的Web高可用架构。
|
JSON 前端开发 应用服务中间件
配置Nginx根据IP地址进行流量限制以及返回JSON格式数据的方案
最后,记得在任何生产环境部署之前,进行透彻测试以确保一切运转如预期。遵循这些战术,守卫你的网络城堡不再是难题。
504 3
|
Java 应用服务中间件 Shell
Nginx+Keepalived+Tomcat 实现Web高可用集群
Nginx+Keepalived+Tomcat 实现Web高可用集群
566 0
|
应用服务中间件 网络安全 nginx
轻松上手Nginx Proxy Manager:安装、配置与实战
Nginx Proxy Manager (NPM) 是一款基于 Nginx 的反向代理管理工具,提供直观的 Web 界面,方便用户配置和管理反向代理、SSL 证书等。本文档介绍了 NPM 的安装步骤,包括 Docker 和 Docker Compose 的安装、Docker Compose 文件的创建与配置、启动服务、访问 Web 管理界面、基本使用方法以及如何申请和配置 SSL 证书,帮助用户快速上手 NPM。
16006 1
|
运维 负载均衡 监控
Nginx加Keepalived实现高可用
使用Nginx和Keepalived来实现高可用性的方案,对于确保关键服务的稳定性和可靠性来说是非常有效的。此配置涉及多个步骤,包括各个服务的安装、设置及测试,目标是在主服务器故障时能无缝切换,以确保服务的持续可用。正确的配置和充分的测试是实现高可用性的保证,这也要求管理员对这些工具和它们背后的原理有深入的了解。
785 1
|
消息中间件 负载均衡 应用服务中间件
高并发环境下的Nginx整合方案
【8月更文挑战第20天】在高并发环境下,整合Nginx代理服务器、静态文件服务器、Tomcat集群、Mycat数据库读写分离和消息队列,可以构建一个强大、灵活且可扩展的Web服务架构。
327 1
|
存储 缓存 前端开发
(三)Nginx一网打尽:动静分离、压缩、缓存、黑白名单、跨域、高可用、性能优化...想要的这都有!
早期的业务都是基于单体节点部署,由于前期访问流量不大,因此单体结构也可满足需求,但随着业务增长,流量也越来越大,那么最终单台服务器受到的访问压力也会逐步增高。时间一长,单台服务器性能无法跟上业务增长,就会造成线上频繁宕机的现象发生,最终导致系统瘫痪无法继续处理用户的请求。
718 1
|
应用服务中间件 网络安全 nginx
使用Nginx Proxy Manager配置Halo的反向代理和申请 SSL 证书
本文引导如何用Nginx Proxy Manager (NPM)配置Halo的反向代理与SSL证书。NPM简化了Nginx的配置流程,适合无Nginx基础的用户。安装NPM无需额外安装Nginx,避免端口冲突。通过`docker-compose.yaml`启动NPM服务,并映射必要的端口。配置Halo反向代理需登录NPM面板,添加代理主机,设置域名、转发IP等参数。NPM支持自动申请与续期SSL证书,确保网站安全访问。更多Halo安装细节,请参考[如何在Linux云服务器上通过Docker Compose部署安装Halo](https://zhangfeidezhu.com/?p=631).
1479 0
使用Nginx Proxy Manager配置Halo的反向代理和申请 SSL 证书
|
负载均衡 应用服务中间件 开发工具
技术笔记:nginx和keeplive实现负载均衡高可用
技术笔记:nginx和keeplive实现负载均衡高可用
|
应用服务中间件 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应用部署场景。
1132 87