nginx结合spring zuul实现内外双网关管控Api接口

本文档详细介绍了如何通过Nginx和Zuul搭建双网关,实现部分API对外公开,部分仅内部使用。配置包括Nginx的代理设置,Zuul的路由规则,以及服务端的应用配置。通过这种方式,可以灵活控制服务的访问权限,并确保系统安全。
摘要由CSDN通过智能技术生成

有时候我们想要把部分系统api接口暴露给外部服务使用,部分内部使用

可以用nginx+内部/外部双网关实现该配置(以某一个服务为例)



nginx和zuul配置

(1) nginx.config 中配置

 server 
	{
    proxy_connect_timeout 600;
    proxy_read_timeout 600;
    proxy_send_timeout 600;	

	listen 80; #监听端口
	listen 443;
	server_name localhost;
	underscores_in_headers on;
        add_header X-Frame-Options SAMEORIGIN;
        add_header X-Content-Type-Options nosniff;
        add_header X-XSS-Protection "1; mode=block";
        add_header Content-Security-Policy "script-src * 'unsafe-inline' 'unsafe-eval'";
        add_header X-Frame-Options SAMEORIGIN;
 		
 		#这个是给外部系统调用开放api的 网关代理
        upstream openapi-gateway {
          server openapi-gw:9900;
        }
		
		#这个是自己系统内部的 网关代理
        upstream personal-gateway {
           server personal-gw:9910;
        }


    #如某个服务配置 location如下
    # 发送 127.0.0.1:80/piaoeda-web/api/** 
    #代理到 http://openapi-gateway/piaoeda-web/api/***  
    #   ->   也就是 http://openapi-gw:9900/piaoeda-web/api/*** 
    #这个请求会被spring配置的网关拦截 找到对应匹配规则的服务
   location ^~ /piaoeda-web/api/ {
             proxy_set_header Host $host; # #后台可以获取到完整的ip+端口号
             proxy_set_header X-Forwarded-For $http_x_forwarded_for;
             proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址
             proxy_pass http://openapi-gateway;       
             access_log  /var/log/nginx/openapi-gateway.log main;
          }
}

(2) 在openapi-gateway的服务中配置 yml

server:
  port: 9900

spring:
  application:
    name: openapi-gateway
    
 #zuul网关配置
 zuul:
  host:
    socket-timeout-millis: 60000
  set-content-length: true
  semaphore:
    max-semaphores: 2000
  routes:  #zuul网关路由配置
    piaoeda-web:
      #这里可以代理到具体的某一个请求,controller,或者整个服务
      path: /piaoeda-web/api/bill/  
      serviceId: piaoeda-web
      stripPrefix: false
 

(2) 在piaoda-web的服务中配置 yml

server:
  port: 9900
  servlet:
    context-path: /piaoeda-web

spring:
  application:
    name: piaoeda-web

(3) 在要开放的controller上写上对应zuul配置的匹配规则

@RestController
@RequestMapping({"/api/bill"})
public class BillApiController {
  
  @Autowired
  private IBillApiService billApiService;
  
  
  @PostMapping({"/rqrecognise"})
  public ICommonResponse ocr(@Valid @RequestBody BillOcrReqDto param) {
    CommonResponse2 commonResponse = (CommonResponse2)this.billApiService.ocr(param);
    return (ICommonResponse)commonResponse;
  }
}
  

personal-gateway 的 spring配置和openapi-gateway 基本一致,只是服务端口和代理的服务不同,但是记得personal-gateway的网关服务千万不要加上对openapi服务的代理。同理,openapi-gateway 也不可以代理personal-gateway

总结

以上配置就可完成 nginx+ 双微服务网关 对内外部系统开放不同接口配置
如果有问题可以通过私信或者留言的方式,看到了会回复。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值