我遇到了奇怪的 nginx 路由行为,我有 2 个 BE 服务与客户端应用程序一起运行,这两个 BE 服务都是从我的客户端调用的。
具有以下 nginx 配置,对这两个服务的 API 调用确实可以成功工作:
server {
listen 80 default_server;
server_name memorial-hub.de;
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 Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
location ^~ /api/v1 {
proxy_pass http://authentication-service:9003;
}
location ^~ /api {
rewrite /api/(.*) /$1 break;
proxy_pass http://service:9002;
}
}
我尝试更改我的身份验证服务前缀以单独关注:
server {
listen 80 default_server;
server_name memorial-hub.de;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
location ^~ /auth-api {
rewrite /auth-api/(.*) /$1 break;
proxy_pass http://authentication-service:9003;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
location ^~ /api {
rewrite /api/(.*) /$1 break;
proxy_pass http://service:9002;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
}
现在调整了我的身份验证服务,它确实收到了 API 调用,但返回了 HTTP 403 ?
尽管在本地运行完全相同的 API 调用确实可以成功工作。
现在我很困惑为什么会发生这种行为。
解决了。
事实证明,我的 CI/CD 没有部署新的后端 .jar,而是在添加更改后部署旧的后端。
nginx 配置没问题