Networks are finite metric spaces, with distances defined by the shortest paths between nodes. However, this is not the only form of network geometry: two others are the geometry of latent spaces underlying many networks and the effective geometry induced by dynamical processes in networks. These three approaches to network geometry are intimately related, and all three of them have been found to be exceptionally efficient in discovering fractality, scale invariance, self-similarity and other forms of fundamental symmetries in networks. Network geometry is also of great use in a variety of practical applications, from understanding how the brain works to routing in the Internet. We review the most important theoretical and practical developments dealing with these approaches to network geometry and offer perspectives on future research directions and challenges in this frontier in the study of complexity.