If any client from the subnet 192.168.1.0/24 tries to open the public IP the NAT-rule works. But what when I want the same thing for the webserver itself (192.168.1.2)?
It works exactly the same for server itself as for any other client (192.168.1.2 is part of 192.168.1.0/24, so it makes no difference for router). If it doesn’t work for you, it must be some other rules getting in the way.
Also consider that the server probably has entries in its hosts file (or a local DNS resolver, or something) which tell it that the IP of website.example.com is the internal IP. If so, then the server isn’t going to even bother trying to reach the public IP when you type http://website.example.com/ into a browser locally on the server…
Pull up a command prompt and try to ping the website name and see what IP it comes back with.
If it’s the public IP, then Sob is correct - the standard Hairpin NAT configuration you gave shouldn’t care that it’s the server trying to reach itself.