Converting an if-fy configuration to a more modern interpretation
Using the if
directive within a location is really only considered valid for certain cases. It may be used in combination with a return
and with a rewrite
directive with a last
or break
flag, but should generally be avoided in other situations. This is due in part to the fact that it can produce some very unexpected results. Consider the following example:
location / { try_files /img /static @imageserver; if ($request_uri ~ "/blog") { proxy_pass http://127.0.0.1:9000; break; } if ($request_uri ~ "/tickets") { proxy_pass http://tickets.example.com; break; } } location @imageserver { proxy_pass http://127.0.0.1:8080; }
Here, we're trying to determine which upstream to pass the request to, based on the value of the $request_uri
variable. This seems like a very reasonable configuration at first glance, because it works for our simple test cases. But the images will neither be served from the...