Nginx proxy manager is a really convenient UI wrapped around nginx. It covers the most common use cases very well. If you have more advanced needs, then it requires some custom configuration. In my case, I wanted to load balance my Proxmox servers. This is how you do that, as per https://nginxproxymanager.com/advanced-config/#custom-nginx-configurations and https://www.reddit.com/r/selfhosted/comments/1fp5mxz/nginx_proxy_manager_fails_when_adding_load/
- Make directories & create
data/nginx/custom/root_top.conf
- Populate with your upstream server list
upstream proxmox-backend {
server first_server.fqdn:8006;
server second_server.fqdn:8006;
server nth_server.fqdn:8006;
} - Set proxy host for http://backend and edit proxy host to have the following in the Advanced tab:
location / {
proxy_pass https://proxmox-backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
4.Profit
In my case it is very simple load balancing with no persistent cookies/session (not needed for my application.) But all those options exist for nginx and it’s just a matter of adding them in custom configuration for NPM.