最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

nginx实现反向代理和负载均衡

来源:动视网 责编:小OO 时间:2025-10-05 04:37:21
文档

nginx实现反向代理和负载均衡

Nginx实现反向代理反向代理方式是指以反向代理服务器来接受互联网上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给互联网上请求连接的客户端,此时反向代理服务器对外就表现为一个服务器。让互联网上的主机通过不同的域名访问不同的内部网主机资源,使内部网主机免受外部网主机攻击,实现负载均衡和缓存功能,很大程度上减轻web服务器的负担,提高访问速度。这些都需要使用反向代理来实现。实现方案:对公司服务器做nat映射到本机192.168.162.54,这样从就能访问到内网
推荐度:
导读Nginx实现反向代理反向代理方式是指以反向代理服务器来接受互联网上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给互联网上请求连接的客户端,此时反向代理服务器对外就表现为一个服务器。让互联网上的主机通过不同的域名访问不同的内部网主机资源,使内部网主机免受外部网主机攻击,实现负载均衡和缓存功能,很大程度上减轻web服务器的负担,提高访问速度。这些都需要使用反向代理来实现。实现方案:对公司服务器做nat映射到本机192.168.162.54,这样从就能访问到内网
Nginx实现反向代理

反向代理方式是指以反向代理服务器来接受互联网上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给互联网上请求连接的客户端,此时反向代理服务器对外就表现为一个服务器。让互联网上的主机通过不同的域名访问不同的内部网主机资源,使内部网主机免受外部网主机攻击,实现负载均衡和缓存功能,很大程度上减轻web服务器的负担,提高访问速度。这些都需要使用反向代理来实现。

实现方案:

对公司服务器做nat映射到本机192.168.162.54,这样从就能访问到内网的本机。再由本机做反向代理服务器,使得内网其他机子上的服务可以通过本机的代理让用户访问。能够实现反向代理的软件有很多,比如apache,squid,nginx。这里选择了比较新的nginx,用nginx做反向代理有支持高并发,稳定,配置简洁等优点。

实验中用本机的80和端口做反向代理服务器,其他的不同端口和虚拟机来模拟内网中的其他服务器,以此前提进行实验。 

实现步骤:

本机windows7系统,安装nginx-0.8.54用来作为反向代理服务器,作用户访问的入口,监听80.81,82,端口。后台放置两个tomcat分别部署在8080和8081端口。虚拟机win2003的iis在90端口发布。

主机地址192.168.162.54,虚拟机地址192.168.40.128

一、通过不同的端口访问不同的服务器

在nginx-0.8.54/conf下添加proxy.conf

内容为

proxy_redirect          off;   

proxy_set_header        Host            $host;   

proxy_set_header        X-Real-IP       $remote_addr;   

proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;   

client_max_body_size    10m;   

client_body_buffer_size 128k;   

proxy_connect_timeout   90;   

proxy_send_timeout      90;   

proxy_read_timeout      90;   

proxy_buffers           32 4k;  

在nginx.conf中添加配置

include      proxy.conf;

server { listen 80; server_name  www.a111.com; location / { proxy_pass http://192.168.162.54:8080; }}

server { listen 81; server_name  www.a222.com; location / { proxy_pass http://192.168.162.54:8081; }}  

server { listen   82; server_name  www.a333.com; location / { proxy_pass  http://192.168.40.128:90;}}  

实现反向代理

在windows/system32/drivers/ect/hosts中

添加192.168.10.162   www.a111.com 实现域名解析

测试输入www.a111.com 

www.a111.com:81 

www.a111.com:82

输入www.a111.com/calc2/ 通过80端口访问tomcat在8080端口下的应用

输入www.a111.com:81/inter/ 通过80端口访问tomcat在8081端口下的应用

这样就是实现了通过不同的端口访问不同的服务器。

二、通过不同的下级目录访问不同的服务器

在之前配置的nginx.conf中的

server { listen 80; server_name  www.a111.com; location / { proxy_pass http://192.168.162.54:8080; }}部分扩展为

server { listen 80; server_name  www.a111.com; 

location  /     { proxy_pass http://192.168.162.54:8080;}

location  /A2/ { proxy_pass http://192.168.162.54:8081;}

location  /A3/ { proxy_pass http://192.168.40.128:90;}

         }

输入

http://www.a111.com/A1/

http://www.a111.com/A2/

http://www.a111.com/A3/

实现同一端口80通过不同的下级目录访问不同的服务器

三、实现负载均衡

在nginx.conf中的  http 模块里添加

upstream myCluster {

        server 127.0.0.1:8080 ;

        server 127.0.0.1:8081 ;} 

表示这个server cluster包含2台服务器

然后在server模块中添加访问同一页面的负载均衡

server {listen  ;server_name  localhost;

          location ~ \\.jsp$ {

            proxy_pass http://myCluster ; 

            proxy_redirect off;

            proxy_set_header Host $host;

            proxy_set_header X-Real-IP $remote_addr;

            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

                 }

}

以端口来做实验,为了区分是访问不同的服务器。虽然两个tomcat的hello文件夹下都有hello.jsp可是他们的内容不同。结果如下,每次刷新会切换一次服务器。

如图:

可通过修改upstream myCluster {

          server 127.0.0.1:8080 weight=5 ;

          server 127.0.0.1:8081 ;}

来改变服务器权重。

四、根据客户端的不同ip访问不同服务器

在nginx.conf中加入模块:

geo $geo {

         default      default;

         192.168.163.0/24   aa;

         192.168.162.0/24   bb;

    }

     upstream aa.server {

        server http://192.168.40.128:90;

     }

    upstream bb.server {

        server 192.168.162.54:8080;

    }

     upstream default.server {

        server 192.168.162.54:8081;

    }

server { listen       84;server_name  www.a999.com;

      location / {

               proxy_redirect off;

               proxy_set_header Host $host;

               proxy_set_header X-Real-IP $remote_addr;

               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

               proxy_pass http://$geo.server$request_uri;

        }

    }

使得192.168.163.x 网段的ip访问虚拟机的90端口 

192.168.162.x网段的ip访问8080 端口

其他ip访问8081端口

实现不同的ip访问不同的服务器

在192.168.163.37的访问结果:

在192.168.162.54的访问结果:

文档

nginx实现反向代理和负载均衡

Nginx实现反向代理反向代理方式是指以反向代理服务器来接受互联网上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给互联网上请求连接的客户端,此时反向代理服务器对外就表现为一个服务器。让互联网上的主机通过不同的域名访问不同的内部网主机资源,使内部网主机免受外部网主机攻击,实现负载均衡和缓存功能,很大程度上减轻web服务器的负担,提高访问速度。这些都需要使用反向代理来实现。实现方案:对公司服务器做nat映射到本机192.168.162.54,这样从就能访问到内网
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top