

You would also need to clear your device’s DNS cache.
You would also need to clear your device’s DNS cache.
It’s the Cypherpunk’s Manifesto all over again.
Not two A records. From what I understand, OP has an A record pointing to their public IP address (which Nginx is listening on behind a NAT). Then, on the local network, OP uses their own DNS server to ignore that entry and instead always serve the local IP when a host on the LAN queries it.
Aside from OP’s devices potentially using a different DNS server (I was only able to solve it for my stock Android by dropping outgoing DNS in my firewall), this solution is a nightmare for roaming devices like mobile phones. Such a device might cache the DNS answer while on LAN or WAN respectively and then try to continue using that address when the device moves to the other network segment.
These are the most likely scenarios in my opinion - OP’s devices are ignoring the hacky DNS rewrite (either due to using a different DNS server or due to caching) and try to access the server via the public IP. This is supported by the connection timeout, which is exactly what you would see when your gateway doesn’t do loopback.
TCP over IP as a protocol is an “open standard”. Network implementations are nearly always strictly proprietary.
The “protocols” behind browsers are public. HTML, CSS, and ECMAScript are all well defined on sites like the Mozilla documentation. You are free to implement your own browser that follows these standards.
Never point your DNS at two different IP addresses like this. It will only cause you pain and unexpected behaviour.
What you are experiencing is solved by so-called “NAT reflection” or “NAT loopback”. It’s a setting that - in the optimal case - you should just be able to activate on the appropriate interface on your gateway.
If you do not have that setting or do not have access to the edge router, but only some intermediate router, you can do a nasty hack. You can point static routes to your public IP address to point at your local IP address instead. In that case, you also need to tell your server to accept packets with your public IP address as the destination.
I pay for the whole VPS, I use the whole VPS.
The graph makes no sense. Did a generative AI make it.
Doesn’t Bitwarden already have that feature? https://bitwarden.com/passwordless-passkeys/
I explained why. Misconfiguration and caching.