Startup guide with a basic setup to deploy the Cheshire Cat behind a reverse proxy with Nginx.
In a production environment you would use Nginx in order to manage access to a specific resource, like the Cat.
For example, you would put a sub-path like /admin
behind a basic authentication or put a filter to accept connection only by a specific IP address or class of them.
A reverse proxy is a server that sits between client devices and a web server, forwarding client requests to the web server and returning the server’s responses to the clients.
Here an example about the usage of Nginx with Cheshire-Cat: the key concept is to use the reverse proxy.
First of all we need to install Nginx (the following instructions are based on Ubuntu):
$ sudo apt install nginx
If everything is installed successfully you can visit the Nginx’s welcome page
http://localhost
Now we have to configure Nginx in order to work with Cheshire Cat.
Here the simple configuration file:
server {
listen 80;
listen [::]:80;
server_name localhost;
location / {
proxy_pass http://localhost:1865/;
}
location /ws {
proxy_pass http://localhost:1865/ws;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
}
}
Code language: PHP (php)
the file above must be saved in /etc/nginx/sites-available
and than created a softlink inside /etc/nginx/sites-enabled
.
$ cd /etc/nginx/sites-enabled
$ sudo ln -s ../sites-available/cheshire-cat.conf cheshire-cat.conf
and than we can validate and restart Nginx
$ sudo nginx -t
$ sudo systemctl restart nginx.service
Before testing that everything works, we need to run Cheshire-Cat in the same machine or network where nginx is running to reach it.
You can find a Github project here where this functionality is shown using a docker-compose https://github.com/mimir-chatbot/reverse-proxy-example.
Next steps
Now that you have deployed your Cat instance, you may be interested in developing a custom client to allow the user interacting with it. Take a look at our SDK libraries and find the one that’s most suitable for your needs. If you haven’t yet, it’s time to develop your first plugin!