Your one-stop-shop for your Self-Hosted Web Server
What is "Engine X"? NGINX is an HTTP web server, reverse proxy, content cache, load balancer, TCP/UDP proxy server, and mail proxy server. What I use it for? I use it for a web server and reverse proxy.
While it isn't overly important what platform you use for a simple web server, having a single setup to add additional support for reverse proxy reduces complexity and differing platform compatibility issues. I previouly used an Apache web server, but now I only need to manage everything from a single server. Plus NGINX is faster .. not that I need it to be.
I've been dabbling in website design since I was a teenager. For those less familiar with my age, I'll just come out and say that it was nearly 30 years ago ... 1997. A web hosting service called Angelfire was all the rage. It was a WYSIWYG web building service and, more importantly, was free as long as you were okay using their domain suffixes. Trust me when I say that I was not good at web design. Even today, I'd say that it's debatable. But it was fun to learn and thus was my entry into HTML coding.
HTML coding, while well known and versatile, is an old language, but it's very easy to learn. With its iterations, it's compatible with various other languages. NGINX, however, can also handle other languages like Node.js, PHP, and Django (Python). Someday, I'd like to learn more about those languages and unlock other potentials in my websites, but seeing as how it's just for fun, for me, HTML is perfect in NGINX.
On to Reverse Proxy .. argueably the most powerful tool in NGINX. "But what is reverse proxy?" you ask. Technically speaking, a reverse proxy is one of the most powerful and flexible features of NGINX, acting as an intelligent middleman that sits between clients and backend servers. It intercepts incoming requests and forwards them to the appropriate internal service, often based on URL, hostname, or headers. This setup enables load balancing, SSL termination, and caching ... all while exposing a single, clean public endpoint. In laymen's terms, it is a single server exposed on port 80/443 where all website requests go to and depending on the request, gives the appropriate website.
Originally, I used NGINX exclusively for its reverse proxy. That's when I was using Apache as a web server and NGINX would point to Apache when my website was requested. Now it's all in one place and makes for easier management and reduces virtual server costs. Since I use it primarily as a reverse proxy, I want to dive deeper into how it works for me. Don't worry, I'll try to keep it simple.
First off, NGINX Reverse Proxy by itself requires comfort in editing configuration files in a linux environment ... at least for my setup. I use mostly Debian-based architectures and prefer nano as a text editor. You modify and maintain what are called server blocks. Server blocks perform 2 key actions:
- Housing the web server/application name that is being requested. As an example, if I want to get to blog.odysseusnetwork.com where "blog" is the web application (by Ghost, for what it's worth), the reverse proxy listens for request of "blog.odysseusnetwork.com"
- After the request is made, it hands off the traffic to an internal IP address, ie. http://10.10.10.90:8080, where the web application is hosted on my internal network.

See .. simple. š
Anyway .. It's a powerful platform. I strongly encourage all of you amatuer web designers and home lab folks to give this a shot.