端口映射+nginx对外请求控制

2017-10-10  本文已影响0人  龙历旗

前几天接到个任务,要和另一家公司对接,具体就是我这开一个接口给对面调用.因为一开始在内网测试,那问题来了,怎么才能让对面访问到呢?

​ 当然是找运维大兄弟.....操作也很简单,就是用路由做一个端口映射,用公网ip做一个端口映射到我本机地址.这样外网就能访问到我的tomcat了.

比如说公网ip是192.168.1.0,我的ip是192.168.1.1,tomcat端口是8080.

那就在路由上配一个端口9876直接映射到本地tomcat 192.168.1.1:8080.那现在外网就可以通过http://192.168.1.0:9876/访问到本地http://192.168.1.1:8080/了.

就这样,做好了接口,问题又来了,因为这个接口是在核心系统里,那这样就会把所有的接口都暴露了,肯定不行..

怎么做呢,怎么才能拦截这些请求呢? 当然又去问了运维大兄弟,再查了些资料,得知用Nginx可以只允许访问指定的url,其他的都直接对外禁止访问.

那怎么做呢?

重新修改下映射规则,不直接映射到tomcat,先经过nginx,通过nginx再把请求发送到tomcat.

这里就重新映射一个端口8000,在nginx中监听这个端口,然后再配置访问规则,再代理到tomcat

在nginx.config中添加一段server

server {
        #监听8080端口,这个8080是路由映射到本机的端口
        listen       8000;
        server_name  0.0.0.0;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            #阻止所有请求,这里将永远输出403错误
            deny all;
        }

        #允许访问 /test/processe接口
        location ~ /test/processe {
            # 代理本地项目url
            proxy_pass http://192.168.4.48:8080;
        }
        #如果还有其他接口,就再添加一个location 
         #location ~ /test/processe1 {
            #proxy_pass http://192.168.4.48:8080;
        #}
         #location ~ /test/processe2 {
            #proxy_pass http://192.168.4.48:8080;
         #}
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

这里的流程就是,外网通过访问公网ip+给定的端口,在路由根据映射规则,再访问到我这台电脑,这个时候请求不是直接去访问本机的接口,而是进入了Nginx,在这里,会去检查请求的url是否与配置允许的地址相同,不同的话就会403 Forbidden错误啦,当uri是/test/processe时,就能访问实际代理的http://192.168.4.48:8080/test/processe接口了

那这样就可以让对面只能访问指定的接口.
原文链接:端口映射+nginx对外请求控制 | 火尧

上一篇 下一篇

猜你喜欢

热点阅读