proxy - proxying relative urls with nginx -
my question similar nginx relative url absolute rewrite rule? - added twist.
i have nginx acting proxy server, proxies multiple apps, similar (simplified) config:
server { listen 80; server_name example.com; location /app1 { proxy_pass http://app1.com; } location /app2 { proxy_pass http://app2.com; } }
this works fine, in other question, these applications (app1
, app2
) use relative urls such /css/foo.css
, or /js/bar.js
. it's big problem ask applications change /app1/css/foo.css
.
is possible nginx intelligently figure out application should handle request? ftr, users accessing these applications this:
http://example.com/app1/fooaction
or http://example.com/app2/baraction
.
if matters, applications java/tomcat based apps.
tia!
based on updated comments; if upstream backend sends referer header, this:
location ~* ^/(css|js)/.+\.(css|js)$ { #checking if referer app1 if ($http_referer ~ "^.*/app1"){ return 417; } #checking if referer 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; }
for example, if backend on app2.com, requests test.css this:
curl 'http://example.com/css/test.css' -h 'referer: http://app2.com/app2/some/api'
the request land here:
/app2/css/test.css
Comments
Post a Comment