使用nginx的反向代理,来定位多个应用或容器

简介: 反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。    

            通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。

  本次实验完成了由一个域名,通过配置nginx的反向代理来定位处于多个不同容器或这主机的应用,具体做法如下

(1)初始化三台不同ip的tomcat容器,如果没有tomcat镜像可以拉取:docker pull tomcat

docker run -d -p 8081:8080 --name tomcat1 -h tomcat1  --net shadownet --ip 172.19.13.1   -v /container_data/:/data tomcat:v1

docker run -d -p 8081:8080 --name tomcat2 -h tomcat2  --net shadownet --ip 172.19.13.2   -v /container_data/:/data tomcat:v1

docker run -d -p 8081:8080 --name tomcat3 -h tomcat3  --net shadownet --ip 172.19.13.3   -v /container_data/:/data tomcat:v1



(2)给三个容器配置文件,进入配置文件地址

mkdir /usr/local/nginx/vhosts

cd /usr/local/nginx/vhosts

vi container1.conf

upstream container1 {
        server 172.19.13.1:8080 weight=1;
    }
 server{
        listen 80;
        # using web sub domain to access
        server_name www.container1.com;
       # access_log  /var/log/nginx/web_access.log

        location / {
           # root /home/web2_root;
            proxy_pass http://container1;
            proxy_read_timeout 300;
            proxy_connect_timeout 300;
            proxy_redirect     off;

            proxy_set_header   X-Forwarded-Proto $scheme;
            proxy_set_header   Host              $http_host;
            proxy_set_header   X-Real-IP         $remote_addr;
        }
    }


vi container2.conf

upstream container2 {
        server 172.19.13.2:8080 weight=1;
    }

 server{
        listen 80;
        # using web sub domain to access
        server_name www.container2.com;
       # access_log  /var/log/nginx/web_access.log

        location / {
           # root /home/web2_root;
            proxy_pass http://container2;
            proxy_read_timeout 300;
            proxy_connect_timeout 300;
            proxy_redirect     off;

            proxy_set_header   X-Forwarded-Proto $scheme;
            proxy_set_header   Host              $http_host;
            proxy_set_header   X-Real-IP         $remote_addr;
        }
    }


vi container3.conf

upstream container3 {
        server 172.19.13.3:8080 weight=1;
    }

 server{
        listen 80;
        # using web sub domain to access
        server_name www.container3.com;
       # access_log  /var/log/nginx/web_access.log

        location / {
           # root /home/web2_root;
            proxy_pass http://container3;
            proxy_read_timeout 300;
            proxy_connect_timeout 300;
            proxy_redirect     off;

            proxy_set_header   X-Forwarded-Proto $scheme;
            proxy_set_header   Host              $http_host;
            proxy_set_header   X-Real-IP         $remote_addr;
        }
    }

最终vhost下三个配置文件



(3)修改nginx.conf主文件,把配置文件包含进来

Cd /usr/local/nginx/conf            //默认安装位置

vi nginx.conf

#part start
#运行nginx进程的账户
#user www;
#
worker_processes  1;
#error_log /var/log/nginx/error.log
#pid /var/run/nginx.pid;

events{
   # use epoll;
    worker_connections 1024;
}

http{
    include       mime.types;
    default_type  application/octet-stream;
    #access_log  /var/log/nginx/access.log  main;
    #
    sendfile        on;
    #
    keepalive_timeout  65;
    gzip  on;
   index   index.html index.htm;
   include /usr/local/nginx/vhosts/*.conf;
   # include /etc/nginx/sites-enabled/*;

 server{
        listen 80;
        # using www  domain to access the main website
        server_name www.master.com localhost;
       # access_log  /var/log/nginx/www.log

        location / {
           # root /home/website_root;
            root   html;
           index  index.html index.htm;

        }
}

 

 

(4)开启nginx

检查配置是否正确



(5)在浏览器下测试不同域名是否可以转发不同容器的应用

首先修改windows上的主机名便于测试

window的hosts文件位于:C:\Windows\System32\drivers\etc\hosts

修改如下,其中192.168.50.203时我的虚拟机地址,读者可更具自己的宿主机(nginx服务器)或者代理服务器IP具修改这个地址


在浏览其输入www.container1.com和www.container2.com





ok,我们发现nginx服务其已经代理成功了。




                
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值