Nginx URL masking to a different domain
server { listen 80; server_name sub.example.com; location / { proxy_pass https://123.12.12.12/path; }}
Thats how it works. If proxy_pass contains locations part - current location will be replaced to specified. http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass
But it's help only for http request and http redirects. If application create html with links https://123.12.12.12
- it's still unchanged. In this case you can try ngx_http_sub_module.
I did like this:
server { listen 80; listen [::]:80; listen 443 http2 ssl; listen [::]:443 http2 ssl; server_name domain1; if ($request_method ~* OPTIONS|GET|HEAD) { return 301 https://domain2$request_uri; } location ~* api { proxy_pass https://domain2$request_uri; }}
Because post-requests will cause a 405 error when redirecting.