Last active
December 23, 2022 10:43
-
-
Save clemlatz/35cf6765f935e7930807 to your computer and use it in GitHub Desktop.
Set up ssl proxy with nginx and letsencrypt (https://secure.example.com => http://example.com)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# # | |
server { | |
# Comment the following lines to disable http | |
#listen 80 default_server; | |
#listen [::]:80 default_server ipv6only=on; | |
# SSL config | |
listen 443 ssl; | |
server_name secure.example.com; | |
ssl_certificate /etc/letsencrypt/live/secure.example.com/fullchain.pem; | |
ssl_certificate_key /etc/letsencrypt/live/secure.example.com/privkey.pem; | |
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; | |
ssl_prefer_server_ciphers on; | |
ssl_dhparam /etc/ssl/certs/dhparam.pem; | |
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; | |
ssl_session_timeout 1d; | |
ssl_session_cache shared:SSL:50m; | |
ssl_stapling on; | |
ssl_stapling_verify on; | |
add_header Strict-Transport-Security max-age=15768000; | |
location / { | |
proxy_set_header Host $host; | |
proxy_set_header X-Real-IP $remote_addr; | |
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
proxy_set_header X-Forwarded-Proto $scheme; | |
proxy_pass http://example.com; | |
proxy_read_timeout 90; | |
} | |
} | |
# Redirect http to https | |
server { | |
listen 80; | |
server_name example.com www.example.com; | |
return 301 https://$host$request_uri; | |
} | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Update & upgrade | |
sudo apt-get update | |
sudo apt-get upgrade | |
# Install & start nginx | |
sudo apt-get install nginx -y | |
sudo service nginx start | |
# Install git | |
sudo apt-get install git -y | |
# Install letsencrypt | |
git clone https://github.com/letsencrypt/letsencrypt | |
cd letsencrypt | |
# Install letsencrypt dependencies | |
./letsencrypt-auto --help all | |
# Stop nginx (port 80 needed by letsencrypt) | |
sudo nginx service stop | |
# Generate certificate | |
./letsencrypt-auto certonly --rsa-key-size 4096 | |
# Generate a strong Diffie-Hellman (2048-bit) group | |
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 | |
# Config nginx to use certificate (see nginx-config.conf) | |
sudo vim /etc/nginx/sites-available/default | |
# Reload nginx | |
sudo service nginx reload |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment