I have a sub-domain, something.site.com. In my main-site, site.com/something, I would like to rewrite to something.site.com, but keep the url site.com/something intact.
Is that something I can do with nginx rewrite rules?
Quoting from the documentation I don't think this is possible:
If the replacement string begins with http:// then the client will be redirected, and any further rewrite directives are terminated.
You will need to look into doing a proxy_pass instead of a rewrite.
For example:
server { server_name site.com location /something { # you may use rewrites here to re-format the path portion of the # URL before passing it on. # e.g.: rewrite ^/(abc) /def last; proxy_pass http://something.site.com; # Proxy on the request, without redirecting. } }