iServerSupport Talk to an engineer

How to install Let’s Encrypt ssl on nginx running Python Django Flask

Learn how to install Let’s Encrypt SSL on Nginx for Django or Flask apps. Free TLS certificate, Nginx config, Python settings, renewal.

How to install Let’s Encrypt ssl on nginx running Python Django Flask server administration guide

Running Python frameworks such as Django or Flask behind Nginx demands more than a basic configuration. Users expect HTTPS, browsers enforce TLS 1.2+, and search engines reward those who serve secure traffic. Free certificates from Let’s Encrypt make this achievable. If you’d prefer a fully managed environment including Nginx tuning and SSL monitoring, check out our **Linux Server Management** service.

Before You Begin - Requirements

  • A registered domain pointing via A + www records to your server
  • An Nginx server block in /etc/nginx/sites-available/your-domain.conf
  • A working Python application using Django or Flask
  • SSH root or sudo access
  • Ensured ports 80/443 open on your firewall

If you have a high-traffic application and want performance tuning included, see our **Server Optimization Service** .

Step 1: Install Certbot for Let’s Encrypt

Update your repositories:

sudo apt-get update

Install Certbot and the Nginx plugin (modern method):

sudo apt-get install -y certbot python3-certbot-nginx

Clone method (not recommended for 2025):

sudo git clone https://github.com/certbot/certbot /opt/letsencrypt

Step 2: Confirm Nginx Configuration

Open your server block and verify:

sudo nano /etc/nginx/sites-available/iserversupport.com

Check the server_name directive:

server_name iserversupport.com www.iserversupport.com;

Validate Nginx and reload:

sudo nginx -t
sudo systemctl reload nginx

Step 3: Obtain the SSL Certificate

Run:

sudo certbot --nginx -d iserversupport.com -d www.iserversupport.com

If IPv6 records exist and fail, remove AAAA records temporarily.

The interactive plugin will configure Nginx and reload automatically.

Step 4: Configure Django / Flask for HTTPS

Django:

In settings.py :

SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True

Flask:

app.config.update({
'SESSION_COOKIE_SECURE': True,
'PREFERRED_URL_SCHEME': 'https'
})

Update your Nginx proxy block:

proxy_set_header X-Forwarded-Proto $scheme;

Step 5: Set Up Auto-Renewal

Let’s Encrypt certificates last 90 days. The package adds a cron job:

Test renewal manually:

sudo certbot renew --dry-run

No errors? You’re good.

For monitoring, consider turning to our **Server Security Service** .

Python Lets encrypt ssl
Python Lets encrypt ssl
Install Django flask Lets encrypt ssl
Install Django flask Lets encrypt ssl

Troubleshooting Common Problems

SymptomCauseFix
SSL fails, browser shows Connection refusedPort 443 blockedOpen port in firewall
DNS still shows HTTPserver_name mismatchConfirm server block matches domain
Large app bundle failsPython dependenciesOptimize with caching & CDN
Renewal failsCertbot errorVerify cron job & DNS records

Conclusion

Securing Django or Flask with Let’s Encrypt on Nginx is straightforward when you follow the correct steps - from installing Certbot to enforcing HTTPS in your settings. While this guide covers the essentials, we can manage full-stack tuning and SSL maintenance for you through our **Linux Server Management** or **Server Optimization Service** .

📷 Image Alt Tags

  • nginx server block configuration for iserversupport.com
  • certbot letsencrypt nginx obtain certificate iserversupport.com
  • django settings secure ssl redirect secure cookies
  • flask application secure session cookie https
  • certbot renew dry run output ssl iserversupport.com

If you want the next blog URL , I’ll hunt down the next one and repeat.

Practical support, not another hosting package

Want an engineer to manage the server behind this problem?

iServerSupport provides monitoring, maintenance, security, and incident response for infrastructure you already control.