gpt4 book ai didi

nginx - 用nginx代理相对URL

转载 作者:行者123 更新时间:2023-12-04 07:37:20 27 4
gpt4 key购买 nike

我的问题类似于Nginx Relative URL to Absolute Rewrite Rule?-但又增加了一个问题。

我有nginx充当代理服务器,它代理多个应用程序,类似于以下(简化的)配置:

server {
listen 80;
server_name example.com;

location /app1 {
proxy_pass http://app1.com;
}
location /app2 {
proxy_pass http://app2.com;
}
}

这可以正常工作,但与其他问题一样,这些应用程序( app1app2)使用相对URL,例如 /css/foo.css/js/bar.js。要求所有应用程序更改为 /app1/css/foo.css之类也是一个大问题。

Nginx是否可以智能地确定应由哪个应用程序处理请求? FTR,用户将像这样访问这些应用程序:
http://example.com/app1/fooactionhttp://example.com/app2/baraction

如果重要,所有应用程序都是基于Java/Tomcat的应用程序。

TIA!

最佳答案

根据您更新的评论;
如果上游后端发送引用 header ,则可以执行以下操作:

location ~* ^/(css|js)/.+\.(css|js)$ {            
#checking if referer is from app1
if ($http_referer ~ "^.*/app1"){
return 417;
}

#checking if referer is from app2
if ($http_referer ~ "^.*/app2"){
return 418;
}
}
error_page 417 /app1$request_uri;
error_page 418 /app2$request_uri;


location /app1 {
proxy_pass http://app1.com;
}

location /app2 {
proxy_pass http://app2.com;
}

例如,如果后端在app2.com上,则请求test.css像这样:
curl 'http://example.com/css/test.css' -H 'Referer: http://app2.com/app2/some/api'

请求到达此处:
/app2/css/test.css 

关于nginx - 用nginx代理相对URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27242357/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com