将前端项目部署到nginx,nginx反向代理到网关,网关路由到目标微服务(springcloud + nginx + nacos+gateway)保姆级教程
nginx配置
我的nginx包目录如下重点关注nginx.conf和leadnews.conf,我们只对这两个进行修改
这是总的nginx.conf(对应上图的nginx.conf),因为服务太多把配置全放在一个文件很乱,并且不好管理所以我们在nginx.conf中这样配置,这里只是进行文件的读取,核心的代理配置都放在leadnews.conf文件夹下面
#user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 引入自定义配置文件,把所以微服务的配置放到leadnews.conf文件夹下,然后加载全部的.conf即可读取到全部的配置文件
include leadnews.conf/*.conf;
}
这是leadnews.conf文件夹下的admin.conf文件,在
# upstream是服务群,使用反向代理的时候会用到
upstream heima-admin-gateway{
# 这里我们网关的地址是 localhost:6001
server localhost:6001;
}
server {
# listen 是要监听的端口号
listen 8803;
# 匹配location根路径下的所有 root是匹配进来从哪找相应的网页 是相对路径,index是访问location/默认
# 匹配的网页
location / {
root E:/heimatoutiao/admin-web/;
index index.html;
}
# 匹配 location ~/service_6001 下的所有并代理到heima-admin-gateway,会把service_6001后面的uri
# 转发给heima-admin-gateway
location ~/service_6001/(.*) {
proxy_pass http://heima-admin-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; # 记录真实发出请求的客户端IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #记录代理信息
}
}
nginx配置:当访问localhost:8803 端口时候跳转到 admin-web下的 index.html 页面(如下图),然后就点登录,登录会发送 http://localhost:8803/service_6001/admin/login/in 的post请求,该请求匹配到了我们的代理,代理会把admin/login/in这块uri转发给gateway网关
gateway + nacos网关配置
(补充:微服务要拉取nacos中管理的配置,并且与本地的application.yml配置合并,才能完成项目启动。但如果尚未读取application.yml,又如何得知nacos地址呢?因此spring引入了一种新的配置文件:bootstrap.yaml文件,会在application.yml之前被读取,流程如下:
)
需要把经常变更的配置信息进行热部署放到nacos中,所以去nacos中根据文件名去找对应的配置文件,这里根据bootstrap文件中
spring.cloud.nacos.server-addr获取nacos地址,再根据
${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
作为文件id,来读取配置。
这是在nacos中配置的网关信息,(一定要注意嵌套顺序,对齐,我就是因为没对齐找了半天没找到)
spring:
cloud:
gateway:
globalcors:
add-to-simple-url-handler-mapping: true
corsConfigurations:
'[/**]':
allowedHeaders: "*"
allowedOrigins: "*"
allowedMethods:
- GET
- POST
- DELETE
- PUT
- OPTION
routes:
# 用户微服务
- id: admin
uri: lb://leadnews-admin
predicates:
- Path=/admin/**
filters:
- StripPrefix= 1
然后在leadnews-admin中配置数据库连接信息
更多推荐
所有评论(0)