Nginx用于密钥罩的位置正则表达式

cwdobuhd  于 2023-01-08  发布在  Nginx
关注(0)|答案(2)|浏览(129)

我有一个keycloak,react web和spring Boot 应用程序都在nginx后面,前端(react)和后端(spring boot)通过nginx代理调用keycloak服务,网址如下:

  • 第一个月
  • admin/.../..etc
  • js/.../.../..etc
  • resources/.../...etc

所有这些网址都是反向代理:
Http://keylock:8180
我不想在nginx中为所有这些url实现多个位置!
我正在考虑将url重写为

  • auth/realms/...
  • auth/dmin/..

或者另一个干净的解决方案与regex,但我不知道如何。

qni6mghb

qni6mghb1#

您可以使用rewrite模块来完成此操作。

location /auth {
    rewrite ^/auth(/|$)(.*) /$2/ break;
    proxy_pass    http://keylock:8180;
}

实际上,使用这个方法,我得到了url的第二部分并代理它。
例如,当请求发送到/auth/realms/...时,url重写为/realms/...并将其发送到keycloak http://keylock:8180/realms/...

ruyhziif

ruyhziif2#

这对我很有效

location  ~ ^/(realms|js|resources|admin)/ {
    proxy_set_header Referer $http_referer;
    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;
    proxy_set_header X-Forwarded-Port $server_port;
    proxy_set_header Host $http_host;
    proxy_pass http://keycloak;
    proxy_redirect off;
}

相关问题