Ursprünglich wollte ich Pound als Reverse Proxy nehmen. Jedoch konnte ich keine Weiterleitung auf Ports einrichten. Daher entschied ich mich dann für NGINX,
nginx mit pakfire installieren.
Dann wollen wir den gesamten externen Verkehr auf SSL umstellen. Der Einfachheit halber werden die jeweiligen Server als Virtual Host konfiguriert. Diese kommen in den sites-available Ordner und im sites-enabled per Symlink verknüpft.
1 2 3 |
cd /etc/nginx/ mkdir sites-available mkdir sites-enabled |
Anschließend die nginx.conf anpassen.
1 2 3 4 5 |
nano /etc/nginx/nnginx.conf # Virtual Hosts - am Ende der Datei einfügen include /etc/nginx/sites-enabled/*; |
Nun wird ein Reverse Proxy Eintrag erstellt. In diesem Fall example.buyenne.com.
1 2 3 4 5 6 7 8 |
openssl req -x509 -nodes -sha384 -days 3650 -newkey rsa:4096 -keyout example.buyenne.com.key -out example.buyenne.com.crt openssl req -new -key example.buyenne.com.key -out example.buyenne.com.csr mkdir /etc/ssl/certs/ mkdir /etc/ssl/private/ chmod 755 certs/ chmod 710 /private/ |
Die csr wird einem RootCA geschickt um ein Zertifikat zu bekommen.
Es empfiehlt sich noch die Diffie-Hellman Parameter “sicherer” zu machen.
1 2 3 4 5 |
openssl dhparam -out dh4096.pem 4096 # je nach Rechner kann es sehr sehr lange dauern - es reicht auch noch openssl dhparam -out dh2048.pem 2048 |
Nun die Beispielskonfiguration für example.buyenne.com
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
#################### # Example Server # #################### server { listen 80; server_name example.buyenne.com www.exampler.buyenne.com; rewrite ^ https://$server_name$request_uri? permanent; #rewrite ^ https://$host$request_uri; } server { listen 443; # listen 443 ssl spdy; server_name example.buyenne.com www.example.buyenne.com; ssl on; ssl_certificate /etc/ssl/certs/example.buyenne.com.pem; ssl_certificate_key /etc/ssl/private/example.buyenne.com.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_prefer_server_ciphers on; ssl_dhparam /etc/nginx/ssl/dh2048.pem; ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS; add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"; add_header X-Frame-Options DENY; location / { proxy_pass http://10.10.10.10:123456/; 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_connect_timeout 150; proxy_send_timeout 100; proxy_read_timeout 100; proxy_buffers 4 32k; client_max_body_size 8m; client_body_buffer_size 128k; proxy_redirect http:// https://; } } |
Es fehlt noch die Verknüpfung
1 |
ln -s /etc/nginx/sites-available/example.buyenne.com /etc/nginx/sites-enabled/example.buyenne.com |
und nun kann der NGINX Server neu geladen werden.
1 |
nginx -s reload |
Hi,
muss der Port 80 in Red für nginx geöffnet werden?
LG
Holger
Hallo Holger,
ja ich mußte ihn öffnen.
Siehe hier
Gruß