Using Nginx as a reverse proxy and load balance

Using some kind of reverse proxy in combination with UnityBase application server is MUST HAVE for Socket type UB server (Linux, Windows) and optional but strongly recommended for HTTPSys base http server under Windows.
Reverse proxy can be used to:
- https termination
- handling static files (with gziping, streaming, partial downloads, cache)
- load balancing
- etc
Below we describe how to configure nginx as a reverse proxy for ub
Configuring UnityBase
In the application config (ubConfig.json) add externalURL and reverseProxy keys:
{
"httpServer": {
"externalURL": "https://myapp.mydomain.com",
"reverseProxy": {"kind": "nginx"}
}
}externalURL is address of your application for the end-user (address they type in browser)
Configuring nginx
ubcli tool have a command generateNginxCfg for creating a include for nginx based on application configuration.
cd to your application folder and type
npx ubcli generateNginxCfgThis command generate file ub-proxy.conf ready to be included into main nginx configuration.
To see additional parameters what can be passed to generateNginxCfg type
npx ubcli generateNginxCfg --helpIn case external url is use HTTPS protocol, you need to add -sslkey path/to/key -sslcert path/to/cert.
Also we recommend to add -r for adding redirection from http to https:
npx ubcli -r generateNginxCfg -sslkey /usr/www/.ssh/web_key.key -sslcert /usr/www/.ssh/web_ker_cert.pemIf you expect user need to store a big documents add -maxDocBody XXXm where XXX ia a maximum document size (in Mb) for upload.
Generated config is well documented - see comments inside for explanation of what we did there.
ub-proxy.conf we generate should be included into nginx.conf:
For Windows add this line to end of http section inside nginx.conf:
include path/to/ub-proxy.conf;and restart nginx.
For unix symlink file into /etc/nginx/sites-enabled
sudo ln -s path/to/ub-proxy.conf /etc/nginx/sites-available/default_server.cfg
sudo ln -s /etc/nginx/sites-available/default_server.cfg /etc/nginx/sites-enabled
sudo nginx -s reload Load balancing
Generated config is ready to be extended for load balancing.
Pass -lb option for adding load balancer specific settings to nginx config.
npx ubcli generateNginxCfg -lbin the generated config adds additional servers inside upstream section