Yucca önünde Nginx + Let's Encrypt ters proxy kurulumu
Giriş
Bu kılavuzda, otomatik olarak yenilenecek bir Let's Encrypt SSL sertifikası nas ıl kurulur ve Nginx nasıl yapılandırılır anlatacağım. Nginx, SSL oturumunu sonlandırmak ve 80 numaralı porttan 443 numaralı porta yönlendirme yapmak için Yucca'nın önünde basit bir web sunucusu olarak görev yapacak.
Yucca kendisi de SSL'i sonlandırabiliyorken ve hatta bunun için bayrakları varken neden Nginx kurmalı? Bu doğru, ancak 443 portunu işgal ettiğinizde bu port başka bir yazılım için kullanılamaz hale gelir ve farklı bir port kullanmanız gerekir, ayrıca HTTP'den HTTPS'e yönlendirme de olmaz – bu sizin için sorun değilse, Nginx kurulum ve yapılandırma bölümünü, Adım 1'i güvenle atlayıp doğrudan Adım 2'ye geçebilirsiniz.
Tüm adımları Ubuntu Server 22.04 üzerinde gerçekleştireceğim, ancak her şey SUSE, CentOS, Fedora, Debian ve benzerlerinde de aynı şekilde çalışacaktır. Tek fark, herkesin kendi paket yöneticisine sahip olmasıdır, ancak apt ile zypper'ı ayırt edebileceğinizi umuyorum 🙂
Adım 0. Hazırlık
Şimdi ihtiyacımız olanlar:
- Genel bir IP adresine sahip bir host
- Bu adrese yönlendirilmiş bir alan adı veya alt alan adı
- Kurulu Yucca
Bu kılavuzda foobar.yuccastream.com alan adını kullanacağım, sizin alan adınız farklı olacaktır.
nslookup foobar.yuccastream.com
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: foobar.yuccastream.com
Address: 128.140.2.103
Yani http://foobar.yuccastream.com:9910 adresinde erişilebilir bir Yucca'm var
Adım 1. Nginx kurulumu ve yapılandırması
nginx'i kuralım:
sudo apt install nginx
http://foobar.yuccastream.com adresini kontrol edelim
Ardından Yucca için bir yapılandırma dosyası oluşturalım:
sudo nano /etc/nginx/conf.d/yucca.conf
foobar.yuccastream.com alan adını kendi alan adınızla değiştirmeniz gerekir
upstream yucca_upstream {
server 127.0.0.1:9910 fail_timeout=0;
}
server {
listen 80;
server_name foobar.yuccastream.com;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://yucca_upstream;
}
}
Dosyayı kaydedin ve yapılandırmanın doğru olduğunu kontrol edin:
sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Her şey doğruysa syntax is ok göreceksiniz nginx yapılandırmasını yeniden yükleyin:
nginx -s reload
Sayfayı yenileyin ve artık http://foobar.yuccastream.com adresinde Yucca web arayüzünü göreceksiniz
Adım 2. Certbot kurulumu ve Let's Encrypt sertifikası oluşturma
Paketleri kuralım:
sudo apt install certbot python3-certbot-nginx
Alan adımız için bir sertifika oluşturalım:
foobar.yuccastream.com alan adını kendi alan adınızla değiştirmeniz gerekir
sudo certbot --nginx -d foobar.yuccastream.com
Certbot sizden bir e-posta (1) isteyecek; gerçek posta kutunuzu girmenizi öneririm, sertifika süresi dolmak üzereyken ve otomatik olarak yenilenemezse Let's Encrypt size bu konuda bir bildirim gönderir. Ayrıca şartlar ve koşulları (2), (3) kabul etmeniz gerekecek. Ardından certbot, gerekli alan adına sahip doğru yapılandırma dosyasını kendisi bulacak, SSL bölümünü ve yönlendirmeyi yapılandıracak ve sonunda size bir bağlantı gösterecek.
Sonucun nasıl göründüğünü /etc/nginx/conf.d/yucca.conf dosyasında görebilirsiniz
upstream yucca_upstream {
server 127.0.0.1:9910 fail_timeout=0;
}
server {
server_name foobar.yuccastream.com;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://yucca_upstream;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/foobar.yuccastream.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/foobar.yuccastream.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = foobar.yuccastream.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name foobar.yuccastream.com;
return 404; # managed by Certbot
}
certbot'un sertifikayı yenilemek için bir zamanlayıcı oluşturduğundan emin olmanızı öneririm; bu zamanlayıcı etkin olmalıdır:
sudo systemctl status certbot.timer
● certbot.timer - Run certbot twice daily
Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
Active: active (waiting) since Fri 2023-09-22 11:54:02 UTC; 7min ago
Trigger: Fri 2023-09-22 14:13:25 UTC; 2h 11min left
Triggers: ● certbot.service
Sep 22 11:54:02 foobar systemd[1]: Started Run certbot twice daily.
http://foobar.yuccastream.com sayfasını yenileyin ve artık her şeyin HTTPS üzerinden çalıştığını, yönlendirmenin de çalıştığını göreceksiniz.
Adım 3. Güvenlik yapılandırması
nginx üzerinden HTTPS erişimini yapılandırdık, ancak Yucca hâlâ http://foobar.yuccastream.com:9910 adresinde HTTP üzerinden erişilebilir durumda. Bunun nedeni şu varsayılan ayardır:
listen_address = ":9910"
Yucca yapılandırma dosyasına gidin ve bu parametreyi düzenleyin:
sudo nano /opt/yucca/yucca.toml
Yucca'nın yalnızca localhost'u dinlemesini sağlayın:
listen_address = "127.0.0.1:9910"
Ve Yucca sunucusunu yeniden başlatın:
sudo systemctl restart yucca
Kontrol edin, artık http://foobar.yuccastream.com:9910 adresinde hiçbir şey yok, https://foobar.yuccastream.com adresinde ise her şey çalışıyor.




