Advertisement

Responsive Advertisement

Exchange DAG yapısını, Nginx Reverse Proxy ile Loadbalancer - Failover Olarak Kurgulamak

 



kurduğunuz bu Exchange DAG yapısını, Nginx üzerinden SSL Offloading (SSL Sonlandırma) yaparak internete açmak için gereken profesyonel konfigürasyonu hazırlayalım.


1. Adım: Nginx Üzerinde Upstream (Havuz) Oluşturma

Önce Nginx'e trafiği hangi sunuculara dağıtacağını söyleyen dosyayı oluşturalım:

Bash

sudo nano /etc/nginx/conf.d/exchange_pool.conf

İçine şu satırları yapıştırın:

Nginx

upstream exchange_dag {
    ip_hash;             # NTLM el sıkışması sürekliliği için şart
    server 192.168.0.61:443 max_fails=3 fail_timeout=30s;
    server 192.168.0.62:443;
    keepalive 100;       # Bağlantıların açık kalma kapasitesini artırdık
}

2. Adım: Exchange Sanal Host Yapılandırması

Şimdi SSL sertifikanızı (Wildcard ferhatyildiz.com.tr) karşılayacak ve trafiği içeriye HTTP (80) olarak iletecek ana konfigürasyonu yapalım:

Bash

sudo nano /etc/nginx/sites-available/mail.ferhatyildiz.com.tr

Konfigürasyon İçeriği:

Nginx

# HTTP'den HTTPS'e Zorunlu Yönlendirme
server {
    listen 80;
    server_name mail.ferhatyildiz.com.tr autodiscover.ferhatyildiz.com.tr;
    return 301 https://$host$request_uri;
}

# Ana Exchange HTTPS Yapılandırması
server {
    listen 443 ssl;
    server_name mail.ferhatyildiz.com.tr autodiscover.ferhatyildiz.com.tr;

    # SSL Sertifika Yolları (Let's Encrypt)
    ssl_certificate /etc/letsencrypt/live/ferhatyildiz.com.tr/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ferhatyildiz.com.tr/privkey.pem;

    # Güvenlik ve Protokol Ayarları
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

    # Paketlerin geldiği kaynak (Gateway)
    set_real_ip_from 192.168.0.1;
    # Gerçek IP'nin okunacağı başlık
    real_ip_header X-Forwarded-For;

    # KRİTİK: Genel NTLM ve Proxy Ayarları
    proxy_http_version 1.1;
    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_set_header X-Forwarded-Client-Cert $ssl_client_cert; # Sertifika şeffaflığı

    # Kimlik doğrulama başlıklarını garantiye alıyoruz
    proxy_set_header Connection "Keep-Alive";
    proxy_pass_header Authorization;
    proxy_pass_header WWW-Authenticate;

    # Performans Ayarları
    proxy_request_buffering off;
    proxy_buffering off;
    tcp_nodelay on;
    client_max_body_size 50M;

    # Zaman Aşımı Ayarları
    proxy_read_timeout 3600;
    proxy_connect_timeout 3600;
    proxy_send_timeout 3600;

    # 1. ÖNCELİK: Autodiscover (Outlook Kurulumu İçin)
    location ~* ^/Autodiscover/ {
        proxy_pass https://exchange_dag;
        proxy_ssl_verify off;
        proxy_ssl_server_name on;
    }

    # 2. ÖNCELİK: MAPI/HTTP (Outlook Classic Bağlantısı)
    location ~* ^/mapi/ {
        proxy_pass https://exchange_dag;
        proxy_ssl_verify off;
        proxy_ssl_server_name on;
        proxy_set_header Connection "Keep-Alive";
    }

    # 3. ÖNCELİK: RPC over HTTP (Eski Outlook Uyumu)
    location ~* ^/rpc/ {
        proxy_pass https://exchange_dag;
        proxy_ssl_verify off;
        proxy_ssl_server_name on;
        proxy_set_header Connection "Keep-Alive";
    }

    # 4. ÖNCELİK: OWA ERİŞİMİ (Dünya Genelinden Erişim)
    location ~* ^/owa {
        proxy_pass https://exchange_dag;
        proxy_ssl_verify off;
        proxy_ssl_server_name on;
        proxy_set_header Connection "Keep-Alive";
    }

    # 5. ÖNCELİK: ECP ERİŞİMİ (Sadece Sizin IP'lerinize Özel)
    location ~* ^/ecp {
        allow 192.168.105.50;  # Admin PC 1
        #allow 192.168.0.1;    # Admin PC 2
        deny all;              # Diğer herkes engelli

        proxy_pass https://exchange_dag;
        proxy_ssl_verify off;
        proxy_ssl_server_name on;
        proxy_set_header Connection "Keep-Alive";
    }

    # 6. ÖNCELİK: Genel Servisler (EWS, ActiveSync, OAB)
    location / {
        proxy_pass https://exchange_dag;
        proxy_ssl_verify off;
        proxy_ssl_server_name on;
        proxy_next_upstream off; # Kimlik doğrulama sırasında sunucu atlamasını engeller
        proxy_set_header Connection "Keep-Alive"; # Mobil cihazlar için hayati
        proxy_pass_header Authorization; # Şifre iletimini garantiye alır
    }
}

Kodlamada hata var mı kontrol etmek

sudo nginx -t

Config yazımı Devreye almak

sudo systemctl reload nginx

nginx servisini yeniden başlatmak

sudo systemctl restart nginx

Link vermek ve yayına almak

/etc/nginx/sites-enabled/

sudo ln -s /etc/nginx/sites-available/mail.ferhatyildiz.com.tr /etc/nginx/sites-enabled/

Sitenin cevap verip vermediğine bakmak

curl -k -I https://192.168.0.62/ecp/

Ecp panele istek geliyormu izlemek

tail -f /var/log/nginx/access.log | grep "/ecp"

DNS çözümlemesine bakmak

dig ferhatyildiz.com.tr

Host dosyasını düzenlemek

sudo nano /etc/hosts

yetki atama

usermod -aG sudo ferhat
  • Ne İş Yapar?: ferhat kullanıcısını sudo grubuna (yetkili kullanıcılar grubu) ekler.
  • Teknik Açıklama: -aG parametresi "append to Group" (gruba ekle) anlamına gelir. Bu komuttan sonra ferhat kullanıcısı, yönetici şifresini girerek sistemde her türlü kısıtlı komutu (sudo ön ekiyle) çalıştırabilir hale gelir.
chown -R ferhat:www-data /var/www/html
  • Ne İş Yapar?: /var/www/html klasörünün ve içindeki tüm alt dosyaların "Sahibi"ni (Owner) değiştirir.
  • Teknik Açıklama:
    • ferhat: Yeni sahibi siz olursunuz.
    • www-data: Grubunu Nginx'in kullandığı servis grubuna sabitler.
    • -R: "Recursive" (Özyinelemeli) yani tüm alt klasörlere de bu ayarı uygula demektir.
chmod -R 775 /var/www/html
  • Ne İş Yapar?: Dosya ve klasörlerin "Erişim İzinlerini" (Permissions) sayısal olarak ayarlar.

  • Teknik Açıklama (775'in Anlamı):

    • İlk 7 (Sahibi): Siz (ferhat), okuyabilir, yazabilir ve çalıştırabilirsiniz.
    • İkinci 7 (Grubu): Nginx (www-data), okuyabilir, yazabilir ve çalıştırabilir.
    • Son 5 (Diğerleri): Diğer kullanıcılar sadece okuyabilir ve çalıştırabilir (yazamaz).


Yorum Gönder

0 Yorumlar

İletişim Formu