内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

springboot如何配置多個(gè)請(qǐng)求服務(wù)代理

這篇文章給大家分享的是有關(guān)springboot如何配置多個(gè)請(qǐng)求服務(wù)代理的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

創(chuàng)新互聯(lián)自2013年起,先為安寧等服務(wù)建站,安寧等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為安寧企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

springboot 配置服務(wù)代理

有時(shí)候,我們可能有下邊這樣的需求:

即,針對(duì)于分布式服務(wù),我們會(huì)有多種業(yè)務(wù)接口服務(wù),但是服務(wù)器上可能只要求開(kāi)放一個(gè)服務(wù)的端口,比如上圖的restA項(xiàng)目端口是對(duì)外開(kāi)放的,但是restB項(xiàng)目端口并未對(duì)外開(kāi)放,這樣帶來(lái)的問(wèn)題就是,用戶無(wú)法直接請(qǐng)求restB項(xiàng)目。

那就想到了可以通過(guò)訪問(wèn)restA ,請(qǐng)求路徑符合一定規(guī)范的時(shí)候,比如http://ip:port/test ,當(dāng)請(qǐng)求中以rest 開(kāi)頭時(shí),可以再轉(zhuǎn)發(fā)請(qǐng)求到restB 項(xiàng)目中即可。

當(dāng)然代理轉(zhuǎn)發(fā) ,有很多的解決辦法,nginx 、zuul 等都可以實(shí)現(xiàn),但是nginx 雖然簡(jiǎn)單,但是總要多裝一個(gè)服務(wù);zuul 配置較為麻煩。

經(jīng)過(guò)百度后,發(fā)現(xiàn)了一個(gè)特別簡(jiǎn)單的配置,即這里要說(shuō)的東西,ServletRegistrationBean的注入,相當(dāng)于是引入servlet ,沒(méi)有具體看過(guò) 。

下面寫(xiě)一下配置步驟:

1、項(xiàng)目結(jié)構(gòu)及介紹

下面是我的項(xiàng)目結(jié)構(gòu),以下選中藍(lán)色的項(xiàng)目為我們要配置的項(xiàng)目,其他的項(xiàng)目先忽略,是我們基于dubbo 和zookeeper 配置的時(shí)候用的。

項(xiàng)目已放到GitHub 上,下載項(xiàng)目GitHub地址

關(guān)于這個(gè)項(xiàng)目的介紹是下邊這樣的,再配張圖來(lái)介紹下:

上圖中關(guān)于suiteoneservice 、suitetwoservice、masterservice 項(xiàng)目是我們的服務(wù)接口發(fā)布方項(xiàng)目。在這里我只是畫(huà)出來(lái),跟我們要配置的內(nèi)容是無(wú)關(guān)的。

suiteone 、suitetwo 項(xiàng)目端口沒(méi)有外放,用戶不能直接訪問(wèn),而master項(xiàng)目是可以直接訪問(wèn)的,所以用戶是通過(guò)訪問(wèn)master 項(xiàng)目,再由master 項(xiàng)目對(duì)請(qǐng)求代理轉(zhuǎn)發(fā)到這兩個(gè)項(xiàng)目中。

2、具體配置步驟

主要的配置很少,都在master 項(xiàng)目中。

(1)引入依賴:

<!--ProxyFilter的引入依賴--> <dependency>  <groupId>org.mitre.dsmiley.httpproxy</groupId>  <artifactId>smiley-http-proxy-servlet</artifactId>  <version>1.7</version> </dependency>

(2)、配置一個(gè)配置類:

該類可以參照下載下來(lái)的,master 項(xiàng)目中的配置。

package microservice.sc.config;import org.mitre.dsmiley.httpproxy.ProxyServlet;import org.springframework.boot.bind.RelaxedPropertyResolver;import org.springframework.boot.web.servlet.ServletRegistrationBean;import org.springframework.context.EnvironmentAware;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.env.Environment;/** * Created by lsf on 2018/7/31. */@Configurationpublic class ProxyServletConfiguration implements EnvironmentAware { @Bean public ServletRegistrationBean servletRegistrationBean(){ ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new ProxyServlet(), propertyResolver.getProperty("servlet_url_one")); //這個(gè)setName必須要設(shè)置,并且多個(gè)的時(shí)候,名字需要不一樣 servletRegistrationBean.setName("suitone"); servletRegistrationBean.addInitParameter("targetUri", propertyResolver.getProperty("target_url_one")); servletRegistrationBean.addInitParameter(ProxyServlet.P_LOG, propertyResolver.getProperty("logging_enabled", "false")); return servletRegistrationBean; } @Bean public ServletRegistrationBean servletRegistrationBean2(){ ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new ProxyServlet(), propertyResolver.getProperty("servlet_url_two")); //這個(gè)setName必須要設(shè)置,并且多個(gè)的時(shí)候,名字需要不一樣 servletRegistrationBean.setName("suittwo"); servletRegistrationBean.addInitParameter("targetUri", propertyResolver.getProperty("target_url_two")); servletRegistrationBean.addInitParameter(ProxyServlet.P_LOG, propertyResolver.getProperty("logging_enabled", "false")); return servletRegistrationBean; } private RelaxedPropertyResolver propertyResolver; @Override public void setEnvironment(Environment environment) { this.propertyResolver = new RelaxedPropertyResolver(environment, "proxy.test."); }}

(3)、配置代理地址:

到master 項(xiàng)目的主配置文件,即application.properties 文件中,加入以下內(nèi)容:

#請(qǐng)求testone時(shí)代理轉(zhuǎn)發(fā)到30001項(xiàng)目中proxy.test.servlet_url_one=/testone/*proxy.test.target_url_one=http://localhost:30001#請(qǐng)求testtwo時(shí)代理轉(zhuǎn)發(fā)到30002項(xiàng)目中proxy.test.servlet_url_two=/testtwo/*proxy.test.target_url_two=http://localhost:30002

上邊的配置簡(jiǎn)單介紹一下,對(duì)于testone/* 這樣的寫(xiě)法,意思就是當(dāng)你的請(qǐng)求路徑以testone 開(kāi)頭,比如http://localhost:30000/testone/test/get1 這樣的路徑,它請(qǐng)求的真實(shí)路徑是http://localhost:30001/test/get1 。主要就是將testone 替換成對(duì)應(yīng)的被代理路徑而已,* 的意思就是實(shí)際請(qǐng)求項(xiàng)目中接口的路徑?。?!

30001 端口即suiteone項(xiàng)目,30002 端口即suitetwo 項(xiàng)目,下載項(xiàng)目之后,分別啟動(dòng)master 、suiteone 、suitetwo 項(xiàng)目的啟動(dòng)類,啟動(dòng)完成后,訪問(wèn)http://localhost:30000/testone/test/get1 ,即會(huì)返回suiteone 項(xiàng)目test/get1 接口的內(nèi)容。

這種配置對(duì)get 、post 請(qǐng)求都有效。

感謝各位的閱讀!關(guān)于“springboot如何配置多個(gè)請(qǐng)求服務(wù)代理”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

名稱欄目:springboot如何配置多個(gè)請(qǐng)求服務(wù)代理
路徑分享:http://www.rwnh.cn/article40/pgcoeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、域名注冊(cè)全網(wǎng)營(yíng)銷推廣、網(wǎng)站設(shè)計(jì)、、App開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
白城市| 林周县| 平陆县| 本溪市| 永川市| 道真| 缙云县| 揭西县| 开阳县| 顺平县| 金门县| 新蔡县| 上饶县| 大名县| 灵宝市| 祁东县| 炎陵县| 莱西市| 德昌县| 肥东县| 洛川县| 阿克陶县| 南木林县| 庆安县| 黄石市| 兰坪| 深泽县| 麻阳| 虞城县| 安达市| 香港| 潜山县| 阜阳市| 枣阳市| 来安县| 绥芬河市| 万山特区| 阳西县| 天峨县| 缙云县| 茂名市|