# Yük dengeleyicide sağlık kontrolü, ücretsiz SSL, HTTPS yönlendirme ve gerçek ziyaretçi IP'si

https://www.gyrohosting.com/bilgi-bankasi/makale/yuk-dengeleyici-saglik-kontrolu-ssl

- **Bu rehberde ne öğreneceksiniz**: Sağlık kontrolü ayarlarını uygulamanıza göre yapmayı, ücretsiz Let's Encrypt sertifikası almayı ve otomatik yenilenmesini sağlamayı, kendi sertifikanızı yüklemeyi, HTTP'yi HTTPS'e yönlendirmeyi, oturum yapışkanlığını ve uygulamanızda ziyaretçinin gerçek IP adresini görmeyi.
- **Süre**: 20 dakika
- **Kimin için**: Gyro Bulut Yük Dengeleyici kullanan sistem yöneticileri ve geliştiriciler.
- **Gerekenler**: Çalışan bir yük dengeleyici, en az bir HTTP servisi ve hedefler ([ilk kurulum](https://www.gyrohosting.com/bilgi-bankasi/makale/yuk-dengeleyici-kurulum)); alan adınızın DNS paneline erişim; hedef sunucularda web sunucusu yapılandırmasını düzenleme yetkisi.

## 1. Servisler ekranı

**Yönetim → Servisler** her servisin protokolünü, portlarını, sağlık kontrolü özetini ve seçeneklerini gösterir. Bir servisi kalem simgesiyle düzenler, çöp kutusuyla silersiniz.

![Servisler: HTTPS servisinde TLS yük dengeleyicide sonlanır ve hedeflere HTTP gider; TCP servisi şifreli trafiği olduğu gibi geçirir.](https://www.gyrohosting.com/resources/uploads/bilgi-merkezi/D12-01-tr.webp)

| Protokol | Ne olur | Ne zaman |
| --- | --- | --- |
| **HTTP** | Yük dengeleyici HTTP isteğini okur ve hedefe iletir | Düz HTTP siteleri; oturum yapışkanlığı gerekiyorsa |
| **HTTPS** | TLS yük dengeleyicide sonlanır, hedeflere **HTTP** gider | Sertifikayı tek yerde yönetmek için (önerilen) |
| **TCP** | Bağlantı olduğu gibi aktarılır | Web dışı servisler ya da şifreli geçiş (TCP 443 → 443, sertifika sunucularda kalır) |

## 2. Sağlık kontrolünü ayarlayın

Sağlık kontrolü, hangi hedefin trafik alacağına karar verir. Servisi düzenleyip **Sağlık kontrolü** bölümündeki alanları uygulamanıza göre ayarlayın:

| Alan | Anlamı | Varsayılan | Sınır |
| --- | --- | --- | --- |
| **Kontrol türü** | **HTTP** (yanıt kodu) ya da **TCP** (yalnız bağlantı) | HTTP |  |
| **Kontrol portu** | Hedefte kontrol edilen port | Hedef port | 1-65535 |
| **Aralık (sn)** | İki kontrol arası süre | 15 | 3-60 |
| **Zaman aşımı (sn)** | Yanıt için beklenen en uzun süre | 10 | Aralıktan küçük |
| **Deneme** | Hedef "sorunlu" sayılmadan önceki başarısız deneme sayısı | 3 | 0-5 |
| **Yol** | HTTP kontrolünde istenen adres | `/` | `/` ile başlamalı |
| **Host başlığı (isteğe bağlı)** | Hedefte birden çok site varsa hangi sitenin kontrol edileceği | boş |  |
| **Kabul edilen kodlar** | Başarılı sayılan yanıt kodları | `2??,3??` | `200`, `2??`, `3??` biçimi |
| **Kontrolü HTTPS ile yap** | Hedef yalnız HTTPS konuşuyorsa | kapalı |  |

1. Uygulamanızda hafif bir sağlık yolu oluşturun (ör. `/saglik`): veritabanına basit bir sorgu atıp `200` döndürsün.
2. **Yol** alanına bu yolu yazın.
3. Uygulama girişe yönlendiriyorsa (302) ve bunu arıza saymak istiyorsanız **Kabul edilen kodlar**'ı `2??` yapın.
4. **Kaydet**'e basın ve **Hedef Sunucular**'da durumların **sağlıklı** olduğunu kontrol edin.

> **Bilgi**
> 
> Hedef sunucuların güvenlik duvarında kontrol portu yük dengeleyiciye açık olmalıdır. Kontrol isteği yük dengeleyicinin IP'sinden (özel ağ kullanıyorsanız özel IP'sinden) gelir.

## 3. Ücretsiz Let's Encrypt sertifikası alın

Sertifikayı yük dengeleyici adına biz alırız ve bitişine 30 gün kala kendiliğinden yenileriz. Doğrulama HTTP üzerinden yapılır, bu yüzden hedef sunucularınızda tek seferlik bir yönlendirme gerekir.

**Ön koşullar:**

- Sertifika alacağınız her alan adının **A kaydı** yük dengeleyicinin IPv4 adresini göstermelidir.
- Yük dengeleyicide **80 portunda bir HTTP servisi** olmalıdır (doğrulama isteği bu porttan hedeflere ulaşır).
- Joker (`*.ornekfirma.com`) sertifika desteklenmez; bir sertifikada en çok 10 alan adı olur.

**Adımlar:**

1. **Yönetim → SSL Sertifikaları**'nı açın ve **Ücretsiz sertifika al (Let's Encrypt)**'e basın.
2. **Alan adları (virgülle, en çok 10)** alanına alan adlarını yazın: `ornekfirma.com, www.ornekfirma.com`.
3. Penceredeki **Ücretsiz sertifika al (Let's Encrypt)** düğmesine basın.

![Let's Encrypt: alan adlarını virgülle yazın; hepsinin A kaydı yük dengeleyicinin IP'sini göstermelidir.](https://www.gyrohosting.com/resources/uploads/bilgi-merkezi/D12-03-tr.webp)

1. İlk seferde ekranda **Sertifika doğrulaması bekliyor** paneli çıkar. Paneldeki yönlendirme satırını **her hedef sunucunun** web sunucusu yapılandırmasına ekleyin (aşağıdaki örnekler; paneldeki adresi kopyalayın).
2. Web sunucusunu yeniden yükleyin ve panelde **Doğrula**'ya basın. Sertifika birkaç saniyede alınır ve listede **Let's Encrypt · otomatik yenilenir** olarak görünür.

Nginx (sunucu bloğunun içine):

```
location ~ ^/\.well-known/acme-challenge/([A-Za-z0-9_-]+)$ {
    return 301 https://www.gyrohosting.com/.well-known/gyro-lb-acme/$1;
}
```

Apache (`.htaccess` ya da sanal sunucu yapılandırması):

```
RewriteEngine On
RewriteRule ^\.well-known/acme-challenge/([A-Za-z0-9_-]+)$ https://www.gyrohosting.com/.well-known/gyro-lb-acme/$1 [R=301,L]
```

Caddy:

```
redir /.well-known/acme-challenge/* https://www.gyrohosting.com/.well-known/gyro-lb-acme/{path.2} 301
```

> **Dikkat**
> 
> Bu yönlendirmeyi **kaldırmayın**. Sertifika her yenilemede aynı yoldan doğrulanır; yönlendirme kaldırılırsa otomatik yenileme olmaz ve sertifika süresi dolunca siteniz HTTPS'te hata verir.

![SSL Sertifikaları: Let's Encrypt sertifikaları otomatik yenilenir; yüklediğiniz sertifikaları siz yenilersiniz.](https://www.gyrohosting.com/resources/uploads/bilgi-merkezi/D12-02-tr.webp)

Let's Encrypt isteği hizmet başına günde 8 kez yapılabilir. Bekleyen bir isteği **Vazgeç** ile iptal edebilirsiniz; uzun süre beklenen istek kendiliğinden düşer ve yeniden başlatmanız gerekir.

## 4. Kendi sertifikanızı yükleyin

Ticari ya da kurum sertifikanız varsa **Sertifika yükle**'ye basın:

- **Sertifika + zincir (PEM):** önce sunucu sertifikası, ardından ara sertifikalar, aynı kutuda.
- **Özel anahtar (PEM, şifresiz):** parola korumalı anahtar kabul edilmez; gerekirse `openssl pkey -in sifreli.key -out sifresiz.key` ile parolasını kaldırın.

Süresi dolmuş sertifika ya da sertifikayla eşleşmeyen anahtar reddedilir. Özel anahtar yalnız yük dengeleyiciye iletilir, bizde saklanmaz. **Yüklediğiniz sertifikaların yenilenmesi sizdedir**: süre dolmadan yenisini yükleyip HTTPS servisinde seçin, eskisini silin.

## 5. HTTPS servisi ve HTTP'den HTTPS'e yönlendirme

1. **Servis ekle**'ye basın: **Protokol** **HTTPS**, **Gelen port** `443`, **Hedef port** `80` (hedefler düz HTTP konuşur).
2. **Sertifikalar (HTTPS)** listesinden sertifikanızı seçin ve **Kaydet**'e basın.
3. Tarayıcıdan `https://ornekfirma.com` adresini açıp deneyin.
4. Tüm ziyaretçileri HTTPS'e almak için önce **80 portundaki HTTP servisini silin**, sonra HTTPS servisini düzenleyip **HTTP isteklerini HTTPS'e yönlendir**'i açın ve kaydedin. Yük dengeleyici 80 portuna gelen her isteği 301 ile HTTPS'e yönlendirir.

> **Bilgi**
> 
> Yönlendirme 80 portunu kendisi kullandığı için 80'de başka servis varken açılamaz ("önce 80 portundaki servisi silin" uyarısı). Let's Encrypt yenilemesi yönlendirme açıkken de çalışır: doğrulama isteği önce HTTPS'e, oradan hedeflerinizdeki yönlendirmeye gider. İlk sertifikayı ise 80 portunda HTTP servisi varken alın (Bölüm 3).

Uygulamanız isteğin HTTPS olduğunu bilmek için `X-Forwarded-Proto: https` başlığına bakmalıdır (Bölüm 7). Aksi halde bazı uygulamalar (ör. WordPress) sonsuz yönlendirme döngüsüne girer.

## 6. Oturum yapışkanlığı

Uygulamanız oturumu sunucunun diskinde ya da belleğinde tutuyorsa (paylaşılan oturum deposu yoksa) ziyaretçi her istekte farklı sunucuya düşüp oturumu kaybedebilir. HTTP ve HTTPS servislerinde **Oturum yapışkanlığı**'nı açın:

| Alan | Varsayılan | Anlamı |
| --- | --- | --- |
| **Çerez adı** | `GYROLB` | Yük dengeleyicinin ziyaretçiyi hangi sunucuya bağladığını tuttuğu çerez |
| **Çerez süresi (sn)** | 300 | Ziyaretçi bu süre boyunca aynı sunucuya gider |
| **Boşta zaman aşımı (sn)** | 50 | Etkinlik olmayan bağlantının kapatılacağı süre |

Kalıcı çözüm, oturumları ortak bir depoda (Redis, veritabanı) tutmaktır; böylece hangi sunucu yanıt verirse versin oturum korunur.

## 7. Gerçek ziyaretçi IP'si

Yük dengeleyici arkasında sunucunuz bağlantıyı **yük dengeleyicinin IP'sinden** gelmiş gibi görür. Ziyaretçinin gerçek IP'sini almanın yolu protokole göre değişir.

**HTTP ve HTTPS servisleri:** yük dengeleyici her isteğe şu başlıkları ekler:

| Başlık | Değer |
| --- | --- |
| `X-Forwarded-For` | Ziyaretçinin IP adresi |
| `X-Forwarded-Proto` | `http` ya da `https` |
| `X-Forwarded-Port` | Ziyaretçinin bağlandığı port |

Web sunucunuza bu başlığa yalnız yük dengeleyiciden geldiğinde güvenmesini söyleyin (`203.0.113.30` yerine yük dengeleyicinizin IPv4 adresini, özel ağ kullanıyorsanız özel IP'sini yazın):

```
# Nginx (http bloğu)
set_real_ip_from 203.0.113.30;
real_ip_header X-Forwarded-For;
```

```
# Apache (mod_remoteip)
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 203.0.113.30
```

**TCP servisleri:** başlık eklenemez. Servisi düzenleyip **Proxy protocol**'ü açın; yük dengeleyici her bağlantının başına ziyaretçi IP'sini içeren PROXY protocol satırı ekler. Hedefteki yazılım bunu desteklemeli ve açıkça etkinleştirilmelidir:

```
# Nginx (stream ya da http bloğunda dinleme)
listen 443 ssl proxy_protocol;
set_real_ip_from 203.0.113.30;
real_ip_header proxy_protocol;
```

> **Dikkat**
> 
> Proxy protocol'ü yalnız hedef yazılımınız da açıkken etkinleştirin. Bir taraf açık, diğeri kapalıysa bağlantılar bozulur ve hedefler sorunlu görünür.

## 8. Sık sorulan sorular

**Let's Encrypt neden "Şu alan adları yük dengeleyiciye yönlenmiyor" diyor?**

Alan adının A kaydı yük dengeleyicinin IPv4 adresini göstermiyor ya da değişiklik henüz yayılmadı. DNS'i düzeltip birkaç dakika sonra tekrar deneyin.

**"Doğrulama adresine ulaşılamadı" uyarısı ne anlama gelir?**

Hedef sunuculardaki yönlendirme eksik, yanlış yolda ya da web sunucusu yeniden yüklenmedi. Tarayıcıdan `http://ornekfirma.com/.well-known/acme-challenge/deneme` adresini açın: `www.gyrohosting.com/.well-known/gyro-lb-acme/deneme` adresine 301 ile yönlenmelisiniz. Yük dengeleyicide 80 portunda servis olduğunu da kontrol edin.

**Sertifika birden çok servise takılabilir mi?**

Evet. Bir HTTPS servisinde birden çok sertifika seçebilirsiniz (farklı alan adları için). Serviste kullanılan bir sertifikayı silmek için önce servisten çıkarın.

**Hedef sunucularda da sertifika kurmam gerekir mi?**

HTTPS servisinde hayır: TLS yük dengeleyicide sonlanır ve hedeflere HTTP gider. Hedeflere kadar şifreleme istiyorsanız TCP 443 → 443 kullanın ve sertifikayı sunucularda yönetin.

**Sağlık kontrolü hedefimi neden sürekli "sorunlu" gösteriyor?**

Sebepler ve kontrol listesi: [Yük dengeleyici sorun giderme](https://www.gyrohosting.com/bilgi-bankasi/makale/yuk-dengeleyici-sorun-giderme).

> **Biliyor muydunuz?**
> 
> Alan adınızın DNS'i Gyro DNS'teyse yük dengeleyicinin IP'sini Terraform'da `gyro_dns_record` kaynağıyla doğrudan A kaydına yazabilirsiniz: [Gyro DNS'i API, CLI ve Terraform ile yönetin](https://www.gyrohosting.com/bilgi-bankasi/makale/gyro-dns-api-cli-terraform).

## Sıradaki adım

- **Bir şey ters giderse:** [Yük dengeleyici sorun giderme](https://www.gyrohosting.com/bilgi-bankasi/makale/yuk-dengeleyici-sorun-giderme)
- Paketler ve fiyatlar: [Yük Dengeleyici](https://www.gyrohosting.com/yuk-dengeleyici)
