fastchat Nginx Gateway
Table of contents
背景
Purpose of the Gateway
The Nginx gateway serves the following purposes:
- Protects Gradio servers by acting as a firewall.
 - Facilitates dynamic mounting and unmounting of Gradio servers.
 - Provides load balancing for Gradio servers.
 - Offers additional security features, such as total connection limit.
 - Reduces attack surface by requiring only a single public port to be exposed for serving.
 
Deployment and Updating of the Gateway
Installing Nginx
On Debian-based distributions (e.g., Ubuntu):
sudo apt update
sudo apt install nginx
On Red Hat-based distributions (e.g., CentOS, Fedora):
sudo yum install epel-release
sudo yum install nginx
Deployment
Copy nginx.conf to /etc/nginx/nginx.conf (need sudo permission).
Replace the port number 7860 in server localhost:7860 with the port where you deploy the Gradio web server.
Modify upstream websocket to configure Gradio servers behind the gateway.
Lastly, update Nginx.
HTTPS Deployment with a Public Domain URL
Make sure you obtain the HTTPS certificate and the private key used to generate the certificate.
Fill the addresses to your certificate and private key in the [PATH_TO_SSL_CERT] and [PATH_TO_PRIVATE_KEY] fields.
If you have your own domain url to serve the chatbot, replace the chat.lmsys.org url with your own domain url.
Updating
Every time when /etc/nginx/nginx.conf is modified, you need to update the Nginx service:
sudo nginx -t  # check `/etc/nginx/nginx.conf`
sudo systemctl reload nginx  # restart Nginx service to load the new config
sudo systemctl status nginx  # check the status of the Nginx service. It should be active (running).