nginx实现内外网同时访问

 

 

nginx的反向代理监听端口功能即可实现内外网同时访问

 

开通外网就是开通外网地址上的一个端口指向内网实例(nginx的代理地址)

 

内外网同时访问的时候前端的请求地址一定要是向外开通的外网地址和端口,后台代理部分可以和内网的配置一样

,照样不变,就是监听前端端口要换成外网的端口

niginx的代理地址看成vip,实际转发地址realip,外网地址+端口=vip  ,到了vip,使用代理就是nginx内部请求的(内对内,相当于由niginx发起的,nginx肯定也在内网)

用了nginx时,外面访问的地址都是nginx的装机地址,然后通过监听端口转发,外网+端口也只是映射到这个装机地址

 

 

前段用的地址都应该是外网的地址(保证前段可以ping通)(看前端怎么处理1,每个页面写,2,截取最初的地址后续请求拼接(最初的需要是外网地址)),外网地址指向nginx装机地址,nginx通过端口监听转发(转化成内网地址)这里实现(内--内)

 

 

没有外网之前,通过nginx的装机地址访问,有了外网之后由于外网就是映射了这个nignx的装机地址,所以只要访问这个外网地址即可,

此时直接用内网(在清空session之后重登)会登录不进去(session不一样),可能是由于登录后的请求地址还是截取用外网的,造成hash对不上

这里的原因

<property name="successUrl" value="http://116.236.184.238:8006/" />

 

 

 

例如:

外网:

 

http://116.236.184.238:8006/hb_phonebank_web/

 

内网:

http://192.168.13.99/hb_phonebank_web/

 

shrio配置改掉

 

端口只能用外网开放的端口8006,这个8126没有开通

 

<property name="successUrl" value="http://192.168.13.99:8126/" />//这里将是前段发起请求的地址,不能是内网地址,换成等价的外网地址

改成:

 

<property name="successUrl" value="http://116.236.184.238:8006/" />//nginx这里跳转到静态页面

 

 

此时nginx监听前端的端口也改成8006

 

 

upstream 116.236.184.238 {  

   ip_hash;  

   server 192.168.13.97:8080;  

    server 192.168.13.99:8080;  

    }

 

 

 

 

server {

        listen       8006;

        server_name  localhost;

        location / {

            root   /home/distph; 

            try_files $uri $uri/ /index.html;

            index  index.html index.htm;//找到静态页面的起始页

        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

             

                location /hb_phonebank_web {//静态页面发请求拦截,转发,转化地址(外转成内请求)

            client_max_body_size 10M;

            proxy_pass http://116.236.184.238;

            proxy_redirect off;

            proxy_set_header Host $host;

            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_set_header X-Real-IP $remote_addr;

        }       

                

    }

 

 server {

        listen       8126;

        server_name  localhost;

        location / {

            root   /home/distph; 

            try_files $uri $uri/ /index.html;

            index  index.html index.htm;//找到静态页面的起始页

        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

             

                location /hb_phonebank_web {//静态页面发请求拦截,转发,转化地址(外转成内请求)

            client_max_body_size 10M;

            proxy_pass http://116.236.184.238;

            proxy_redirect off;

            proxy_set_header Host $host;

            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_set_header X-Real-IP $remote_addr;

        }       

                

    }

 

 

这里外网8006对应我们的80意味着前段过来的请求只有80,如果还是用内网的另一个8126监听跳转前端,是不可能的,改为8006也不可能,因为8006变为80,

此时外网应该再开一个端口对应后端的8126之类

 

动静分离要有两个端口1,后台,2前端

 

发布在tomcat的root目录下只要用ip+端口即可访问到,前后分离的前端也可如此分离,这个ip+端口就是代理地址,代理转发到有前端的服务节点请求,

这种没有通过端口监听的话对于前端不能刷新,因为ip+端口=代理地址=外网指向地址,这时可以再开一个端口对应前端的监听映射(nginx监听)

 

 

 

猜你喜欢

转载自yuhuiblog6338999322098842.iteye.com/blog/2408177
今日推荐