springcloud项目部署Nginx+Gateway+其他服务

一. 部署 Nginx

  • Nginx 是一个高性能的 Web 服务器和反向代理服务器。它常用于将流量从公共互联网引导到内部的应用程序服务器。
  • 你可以在服务器上安装 Nginx,并根据你的需求进行配置。通常的配置包括监听端口、定义服务器块、配置反向代理、设置 SSL/TLS 等。
  • 配置完成后,你可以启动 Nginx,并确保它能够正常处理流量。
  • 明白它在整体项目中承担的作用:反向代理,负载均衡以及部署静态资源,这也是本章所用到的

我这边将其分为四步:

第一步:

        创建目录

mkdir -p /data/nginx/logs/
mkdir -p /data/nginx/conf/
mkdir -p /data/nginx/html/
第二步:

        编写配置文件,方法有很多,可以手搓,拷贝后修改等等

# 定义负载均衡的 upstream
upstream backend_service1 {
    server backend1.example.com;
    server backend2.example.com;
    # 在这里添加更多的后端服务器
}

upstream backend_service2 {
    server backend3.example.com;
    server backend4.example.com;
    # 在这里添加更多的后端服务器
}

server {
    listen 80;
    server_name yourdomain.com;

    # 配置第一个 Spring Cloud 微服务
    location /service1/ {
        proxy_pass http://backend_service1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # 配置第二个 Spring Cloud 微服务
    location /service2/ {
        proxy_pass http://backend_service2;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # 其他配置项
    # 可以在这里添加其他 Nginx 配置,比如 SSL 证书、日志等
}
第三步:

        docker拉取镜像(当然如果有特殊要求,也可以解压用自己的)安装nginx并启动

cd /data/lanxum/nginx

docker pull nginx  #默认拉取最新

docker create --restart always --network=host --name nginx -v $PWD/html:/usr/share/nginx/html -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/var/log/nginx nginx

docker start nginx

二. 部署 Gateway

yaml配置:

你可以根据实际需求调整这些配置,并将其保存为 application.yml 文件,用于配置 Spring Cloud Gateway。确保在项目的依赖中添加 Spring Cloud Gateway 相关的依赖,以便这些配置能够生效。

启动gateway:

        就有很多方式了,直接java -jar也可以启动(前提是你配置了java环境)或者将jar包打成images再做成容器等等,此处采用了shell脚本(原理也是java -jar) 

上面省略了注册中心的部署,第二期,从注册中心开始!!!

这期先到这里,如果感兴趣可以参考第二期!!!

  • Gateway 是一个 API 网关,用于管理和转发来自客户端的 API 请求到相应的后端服务。
  • 你可以选择使用不同的 API 网关,如 Kong、Apigee、AWS API Gateway 等,根据你的需求进行配置和部署。
  • 配置 Gateway 包括定义 API、设置路由、认证和授权、监控和日志等。
    spring:
      cloud:
        gateway:
          routes:
            - id: service1-route
              uri: http://service1
              predicates:
                - Path=/service1/**
                - Header=X-Service-ID, service1
              filters:
                - StripPrefix=1
            - id: service2-route
              uri: http://service2
              predicates:
                - Path=/service2/**
                - Header=X-Service-ID, service2
              filters:
                - StripPrefix=1
            - id: service3-route
              uri: http://service3
              predicates:
                - Path=/service3/**
                - Header=X-Service-ID, service3
              filters:
                - StripPrefix=1
            - id: service4-route
              uri: http://service4
              predicates:
                - Path=/service4/**
                - Header=X-Service-ID, service4
              filters:
                - StripPrefix=1
            - id: service5-route
              uri: http://service5
              predicates:
                - Path=/service5/**
                - Header=X-Service-ID, service5
              filters:
                - StripPrefix=1
    
          # 全局过滤器,用于处理跨域请求
          default-filters:
            - name: DedupeResponseHeader
              args:
                name: Access-Control-Allow-Origin
                strategy: RETAIN_FIRST
            - name: AddResponseHeader
              args:
                name: Access-Control-Allow-Origin
                value: "*"
            - name: AddResponseHeader
              args:
                name: Access-Control-Allow-Methods
                value: "GET, POST, PUT, DELETE, OPTIONS"
            - name: AddResponseHeader
              args:
                name: Access-Control-Allow-Headers
                value: "Content-Type, Authorization"
            - name: AddResponseHeader
              args:
                name: Access-Control-Max-Age
                value: "3600"
            - name: AddResponseHeader
              args:
                name: Access-Control-Allow-Credentials
                value: "true"
    
    server:
      port: 8080
    

    以上是一个 Gateway 的 YAML 配置文件示例,包含五个服务、根据 ID 转发到不同的服务、具有负载均衡和跨域处理。

  • 解释yaml:
  • Routes

    • routes 定义了五个路由,每个路由对应一个服务 (service1service5)。
    • 每个路由有两个 predicates:PathHeaderPath 用于匹配请求路径,Header 用于匹配请求头中的 X-Service-ID,将请求转发到相应的服务。
    • filters 中的 StripPrefix=1 用于去掉请求路径中的第一个路径段(例如,将 /service1/path 转换为 /path)。
  • Global Filters

    • default-filters 定义了一些全局过滤器,用于处理跨域请求(CORS)。
    • DedupeResponseHeader 用于删除重复的 Access-Control-Allow-Origin 响应头。
    • AddResponseHeader 用于添加 CORS 相关的响应头,包括允许的来源、方法、头部和凭证等。
  • Server Port

    • server.port 设置为 8080,定义 Gateway 服务监听的端口。

相关推荐

  1. springcloud项目部署Nginx+Gateway+其他服务

    2024-06-06 05:16:01       9 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-06 05:16:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-06 05:16:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-06 05:16:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-06 05:16:01       18 阅读

热门阅读

  1. 利用LinearList类定义Stack

    2024-06-06 05:16:01       11 阅读
  2. sklearn基础教程

    2024-06-06 05:16:01       10 阅读
  3. 2024.6.05总结1102

    2024-06-06 05:16:01       10 阅读
  4. 文档智能开源软件

    2024-06-06 05:16:01       7 阅读
  5. 常用设计模式

    2024-06-06 05:16:01       7 阅读
  6. 层出不穷的大模型产品,你怎么选?【模板】

    2024-06-06 05:16:01       12 阅读