一. 部署 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
定义了五个路由,每个路由对应一个服务 (service1
到service5
)。 - 每个路由有两个 predicates:
Path
和Header
。Path
用于匹配请求路径,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 服务监听的端口。
-