> https://yucca.app/tr/docs/guides/Nginx/ sayfasının Markdown sürümü. Belgeleme dizini: [llms.txt](https://yucca.app/tr/llms.txt), tek dosyada tam metin: [llms-full.txt](https://yucca.app/tr/llms-full.txt). Herhangi bir sayfa Markdown olarak mevcuttur: URL'nin sonundaki eğik çizgiyi kaldırıp `.md` ekleyin.

# 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.<br />Yucca kendisi de SSL'i sonlandırabiliyorken ve hatta bunun için [bayrakları](https://yucca.app/tr/docs/configuration.md#cert_file) 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.<br />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:

1. Genel bir IP adresine sahip bir host
2. Bu adrese yönlendirilmiş bir alan adı veya alt alan adı
3. [Kurulu Yucca](https://yucca.app/tr/docs/install.md)

Bu kılavuzda `foobar.yuccastream.com` alan adını kullanacağım, sizin alan adınız farklı olacaktır.

```sh
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

```

[![nginx1](/tr/assets/images/nginx1-f71285a8a03081e772a4456d3f3b9241.png)](https://yucca.app/tr/assets/files/nginx1-f71285a8a03081e772a4456d3f3b9241.png)

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:

```sh
sudo apt install nginx

```

`http://foobar.yuccastream.com` adresini kontrol edelim

[![nginx2](/tr/assets/images/nginx2-e7de29f0a6cc5a16824219d0540ab0f1.png)](https://yucca.app/tr/assets/files/nginx2-e7de29f0a6cc5a16824219d0540ab0f1.png)

Ardından Yucca için bir yapılandırma dosyası oluşturalım:

```sh
sudo nano /etc/nginx/conf.d/yucca.conf

```

> **Uyarı.** `foobar.yuccastream.com` alan adını kendi alan adınızla değiştirmeniz gerekir

```sh
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:

```sh
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:

```sh
nginx -s reload

```

Sayfayı yenileyin ve artık `http://foobar.yuccastream.com` adresinde Yucca web arayüzünü göreceksiniz

[![nginx3](/tr/assets/images/nginx3-4ca009416e84aca46f3096bd20af3521.png)](https://yucca.app/tr/assets/files/nginx3-4ca009416e84aca46f3096bd20af3521.png)

## Adım 2. Certbot kurulumu ve Let's Encrypt sertifikası oluşturma

Paketleri kuralım:

```sh
sudo apt install certbot python3-certbot-nginx

```

Alan adımız için bir sertifika oluşturalım:

> **Uyarı.** `foobar.yuccastream.com` alan adını kendi alan adınızla değiştirmeniz gerekir

```sh
sudo certbot --nginx -d foobar.yuccastream.com

```

[![nginx4](/tr/assets/images/nginx4-257ee55cf8f90940b2c91fc87749bcb0.png)](https://yucca.app/tr/assets/files/nginx4-257ee55cf8f90940b2c91fc87749bcb0.png)

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

```sh

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:

```sh
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.

[![nginx5](/tr/assets/images/nginx5-8a3f66842bdeabfcf25bef14aa513371.png)](https://yucca.app/tr/assets/files/nginx5-8a3f66842bdeabfcf25bef14aa513371.png)

## 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:

```sh
listen_address = ":9910"

```

Yucca yapılandırma dosyasına gidin ve bu parametreyi düzenleyin:

```sh
sudo nano /opt/yucca/yucca.toml

```

Yucca'nın yalnızca localhost'u dinlemesini sağlayın:

```sh
listen_address = "127.0.0.1:9910"

```

Ve Yucca sunucusunu yeniden başlatın:

```sh
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.
