I want to handle 2 cases: test.example.com and test.example.com/ABC.
If the entered url is the base domain (test.example.com), I want to proxy_pass a given endpoint (Let's say example.com/home).
If test.example.com/ABC is given, I want to proxy_pass to example.com/confirm/ABC
I made the (1) work like so:
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name test.example.com;
location / {
proxy_pass https://example.com/home;
}
}
But I couldn't figure out how to say "If $request_uri exists, proxy_pass to different endpoint". I tried:
location / {
if ($request_uri) {
proxy_pass https://example.com/confirm/$request_uri;
}
proxy_pass https://example.com/home;
}
How can I achieve this?
$request_uri always exists and is never empty. The URI for the root of your domain is a single / (even if it's not displayed in the browser's address bar).
The location block which matches that URI is location = /. See this document for details.
For example:
location = / {
proxy_pass https://example.com/home;
}
location / {
proxy_pass https://example.com/confirm/;
}
The first location block only matches the root URI /, and the second location block matches any other URI. The remainder of the URI is automatically appended to /confirm/. See this document for details.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With