Common examples are nginx, HAProxy, Traefik, Caddy and Apache with mod_proxy. The proxy terminates TLS, balances load, caches, adds security headers and puts several services behind one IP.
The backend now only sees the proxy as the client. For logs, rate limits and brute-force protection to know the real client IP, the proxy must set X-Forwarded-For and X-Forwarded-Proto, and the application must trust the proxy; in Nextcloud via trusted_proxies.
Common mistakes: the application generates http:// links because it does not know TLS ends at the proxy; the proxy cuts long uploads with a timeout or size limit; or the backend is down and the proxy answers 502 Bad Gateway.
Example
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;