nginx 和gateway配置实现动静分离和反向代理

这两个配置文件分别是Nginx和Spring Cloud Gateway的配置文件,它们用于构建网关服务,进行请求的路由和转发。

前端发送请求的时候为了不暴露服务器地址,所以会使用nginx做反向代理的一个主要作用是隐藏后端服务器的真实地址,从而增加网络安全性和隐私。当客户端发送请求到反向代理服务器时,客户端不知道真正处理请求的后端服务器的地址和细节,而只与反向代理服务器通信

Nginx配置文件:使用nginx做微服务的静态资源服务器,如果服务很多,都写在一个http模块下,就会显得很臃肿,这样采用include引入的形式

#user  nobody;
worker_processes  1;

events {
    worker_connections  1024;
}
##文件加载 http模块中有许多的server 一个server表示一个虚拟主机
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
	# 引入自定义配置文件
	include leadnews.conf/*.conf;
}

引入的网关服务配置·文件

//app 网关集群
upstream app-gateway {
    server localhost:51601;
}

server {
    listen 8801;
    location / {
        root html/app-web/;
        index index.html;
    }
  一般前端发送请求,都会在真正的api前面统一加一个前缀,方便nginx正则匹配
    location ~/app/(.*) {
        proxy_pass http://app-gateway/$1;
        proxy_set_header HOST $host;
        proxy_pass_request_body on;
        proxy_pass_request_headers on;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

解读:

  • upstream heima-app-gateway: 定义一个名为 heima-app-gateway 的upstream块,指定了一个后端服务器 localhost:51601。

  • server: 定义一个HTTP服务器块,监听在端口8801上。

  • location /: 针对根路径的请求,在html/app-web/目录下寻找静态文件,如果找到则返回。这通常用于服务静态资源文件。

  • location ~/app/(.*): 使用正则表达式匹配以 /app/ 开头的路径,并将这个部分捕获为$1。然后通过proxy_pass指令将请求转发到http://app-gateway/$1,实现了反向代理。

Spring Cloud Gateway配置文件:

spring:
  cloud:
    gateway:
      globalcors:
        add-to-simple-url-handler-mapping: true 
        corsConfigurations:
          '[/**]':
            allowedHeaders: "*" 
            allowedOrigins: "*" 
            allowedMethods:
              - GET
              - POST
              - DELETE
              - PUT
              - OPTION
      routes:
        - id: user
          uri: lb://leadnews-user 
          predicates:
            - Path=/user/**
          filters:
            - StripPrefix=1 
        - id: article
          uri: lb://leadnews-article
          predicates:
            - Path=/article/**
          filters:
            - StripPrefix=1

  • spring.cloud.gateway.globalcors: 全局CORS配置,允许所有来源 (allowedOrigins: “"),所有请求头 (allowedHeaders: "”),以及指定的HTTP请求方法。

  • spring.cloud.gateway.routes: 定义了路由规则。

  • id: 路由的唯一标识符,在整个微服务的唯一服务标识。

  • uri: 指定了路由的目标地址。lb://leadnews-user 和 lb://leadnews-article 是服务的名称,lb 表示使用负载均衡器。

  • predicates: 定义了匹配条件,例如Path=/user/**表示匹配以 /user/ 开头的请求。

  • filters: 定义了过滤器,例如StripPrefix=1表示去掉请求路径中的一个前缀。过滤调用为了匹配nginx反向代理的统一前缀,这样才能知道转发到哪个服务

综合起来,Nginx用于反向代理静态文件和某些请求,而Spring Cloud Gateway用于动态路由和过滤请求。Nginx主要负责静态资源的服务,而Spring Cloud Gateway则负责动态的路由和请求过滤,将请求转发到相应的后端服务。这样的设计使得系统具有更好的灵活性和可维护性。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝胖子不是胖子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值