Please assume that there is a PHP CMS that retrieves content according to IDs from database.
So every time you visit this website it interacts with Database and Processes the PHP request.
Can Nginx or Varnish cache and store a page after user visited that page? So next time if any user visits that page it will load from the cache.
Varnish is capable of caching content infront of your CMS. You will get a conservative caching policy with the default configuration so I suggest you start with this and work your way up from there.
You should also know that Varnish is not a disk cache, but an in-memory cache.