NGINX
NGINX is a popular web server used as a reverse proxy with free Let’s Encrypt certificates. Visit the official documentation for detailed instructions.
Websockets
People often look over the need to tell NGINX to proxy websockets correctly, leading to chat being disabled. Please read the quick documentation by nginx around websocket support to make sure you’re doing it properly.
Essentially, you’ll need to edit /etc/nginx/nginx.conf
to add the following map block to the http section
http {
...
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
...
}
You’ll end up with a configuration that looks somewhat like the following when you’re done setting up NGINX. The below should be added to /etc/nginx/sites-available/my.site.com.conf
and enabled with ln /etc/nginx/sites-available/my.site.com.conf /etc/nginx/sites-enabled/my.site.com.conf
and tested with sudo nginx -t
, then restarted sudo service nginx restart
server {
server_name owncast.yourdomain.com;
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_pass http://127.0.0.1:8080;
}
}