nginx实现根据URL转发请求的实战经历

nginx实现根据URL转发请求的实战经历,第1张

nginx实现根据URL转发请求的实战经历

本文的重点是介绍一个nginx完成根据URL转发请求的实践练习。原文根据示例代码非常详细,对大家学习培训或者应用nginx有一定的参考价值。和有需要的朋友一起学习学习吧。

序言

因为已经很久没有部署分布式存储内网了,应用了fastdfs,所以应用部署到端口8088,其后台管理智能管理系统部署到端口8089(同一个内网服务器)。这个后台管理智能管理系统的服务项要请求fastdfs服务项,可以立即请求(同一服务器的资源)。但是大家现在只戴后台智能管理系统(Springboot新项目),没有通过外网地址分配的IP只能访问后台智能管理系统。如果要立即访问fastdfs服务项目的socket,就必须连接服务器的外网地址,但这样就限制了所有客户的访问(我不能每次都访问你的服务器,但我认为在其他地区可以访问)。

代理:SockerServer监听某个端口,按照http消息格式连接到特定的服务器端口,进行数据信息请求
-http代理
http请求经过代理服务器,代理服务器只需要共享相对的http响应体。
-HTTPS代理
HTTPS请求通过代理服务器,会推送一个连接消息格式,与代理服务器建立隧道。如果代理服务器返回到HTTP200,创建将会成功。之后,代理服务器只能共享数据信息。其实SSL/TLS挥舞还是发生在手机客户端和真实服务器端。

ProxyServlet

作为新的后台管理项目,端口8089可以访问服务器的fastdfs服务项目,我首先想到的就是应用Springboot的ProxyServlet来代理一个特定的请求到服务器的端口8088。

Springboot的主要Servlet是SpringMVC的DispatcherServlet,它的默认url-pattern是“/”。如果我们想为某个url添加不同的激活(其他服务器套接字),我们必须建立一个新的代理servlet,它将应用于ServletRegistrationBean。建立一个新的ProxyServlet来监听不同的端口和推送数据信息,并申请在springboot管理方法的servletContext中注册(设置具体的服务器和端口,请求socket共享)。

依靠

<dependency> <groupId>org.mitre.dsmiley.httpproxy</groupId> <artifactId>smiley-http-proxy-servlet</artifactId> <version>1.7</version> </dependency>

配备有

###配备代理 #请求resource时代理分享到端口8088新项目中 proxy.test.servlet_url_one=/resource/* proxy.test.target_url_one=https://localhost:8088 @Component @Data publicclassProxyFilterServlet{ @Value("${proxy.test.target_url_one}") privateStringtargetUrl; @Value("${proxy.test.servlet_url_one}") privateStringservletUrl; }

更改配置并添加

@Configuration publicclassProxyServletConfig{ @Autowired privateProxyFilterServletproxyFilterServlet; //好几个代理servlet能够配备好几个bean @Bean publicServletRegistrationBeanservletRegistrationBean(){ ServletRegistrationBeanservletRegistrationBean=newServletRegistrationBean(newProxyServlet(),proxyFilterServlet.getServletUrl()); //这一setName务必要设定,而且好几个的情况下,姓名必须不一样 servletRegistrationBean.setName("go_backend"); servletRegistrationBean.addInitParameter("targetUri",proxyFilterServlet.getTargetUrl()); servletRegistrationBean.addInitParameter(ProxyServlet.P_LOG,"false"); returnservletRegistrationBean; } }

根据servletware创建与整个目标服务器的连接不如nginx这样的技术代理服务器强大。

nginx—代理共享

  • 这时候我想起在服务器中间加了一层nginx,把不同的服务请求分享给不同的端口API来解决。
  • 将必须请求的外部网络地址的请求转到同一服务器内部网络端口

    server{ listen80; server_name127.0.0.1; location/{ proxy_passhttp://127.0.0.1:3000; } location~/api/{ proxy_passhttp://172.30.1.123:8081; } }

    参考:

    https://www.jb51.net/article/174382.htm

    https://www.jb51.net/article/174383.htm

    摘要

    这就是本文的全部内容。希望本文中的内容对大家的学习培训或者工作有一定的参考价值。感谢您的申请。

    欢迎分享,转载请注明来源:内存溢出

    原文地址: http://outofmemory.cn/zz/774751.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-05-03
    下一篇 2022-05-03

    发表评论

    登录后才能评论

    评论列表(0条)

    保存