Enable Multiple Servers/Sites Behind One Public IP With A Reverse Proxy
Most home Internet users only have one public IP address. That is very limiting if you want to expose multiple services/servers/sites to the Internet. A reverse proxy solves that problem. In this tutorial, we will walk through how to install and configure NGINX as a reverse proxy as well as some additional steps to enhance the security of the hosting system.
Index
- Securing SSH – 01:42
- Basic UFW/NGNIX Setup – 03:55
- Configuring NGNIX – 05:36
- Installing a Certificate – 11:56
SSH
#ssh cert auth mkdir -p ~/.ssh nano ~/.ssh/authorized_keys chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys ls -l /etc/ssh/sshd_config.d/ #force cert use for SSH sudo nano /etc/ssh/sshd_config.d/50-cloud-init.conf PermitRootLogin no PasswordAuthentication no sudo systemctl restart sshd
UFW
sudo apt list --installed | grep -i ufw sudo apt install ufw sudo ufw default allow outgoing sudo ufw default deny incoming sudo ufw allow ssh sudo ufw allow http/tcp sudo ufw allow https/tcp sudo ufw status sudo ufw enable sudo ufw disable
NGINIX – default
sudo nano /etc/nginx/sites-available/default #server_name _; return 444;
NGINX – site
sudo nano /etc/nginx/sites-available/rp.missingremote.com.conf server { server_name rp.missingremote.com; listen 80; listen [::]:80; set $remoteserver 192.168.13.172:80; location / { return 444; #proxy_pass http://$site; # include proxy_params; } location /site { rewrite ^/site(.*)$ $1 break; proxy_pass_header Authorization; proxy_pass $scheme://$remoteserver; # proxy_pass http://$remoteserver; include proxy_params; } } sudo ln -s /etc/nginx/sites-available/rp.missingremote.com.conf /etc/nginx/sites-enabled/rp.missingremote.com.conf
NGINIX – commands
sudo nginx -t sudo service nginx reload
CERTBOT – LetsEncrypt
sudo apt install certbot sudo apt install python3-certbot-nginx sudo certbot --nginx -d rp.missingremote.com