|
# fastchat Nginx Gateway |
|
|
|
## Purpose of the Gateway |
|
|
|
The Nginx gateway serves the following purposes: |
|
|
|
1. Protects Gradio servers by acting as a firewall. |
|
2. Facilitates dynamic mounting and unmounting of Gradio servers. |
|
3. Provides load balancing for Gradio servers. |
|
4. Offers additional security features, such as total connection limit. |
|
5. 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): |
|
|
|
```bash |
|
sudo apt update |
|
sudo apt install nginx |
|
``` |
|
On Red Hat-based distributions (e.g., CentOS, Fedora): |
|
|
|
```bash |
|
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: |
|
|
|
```bash |
|
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). |
|
``` |
|
|