Apache Reverse Proxy Kurulumu
Bu rehberde Apache web sunucusunda Reverse Proxy yapılandırmasını öğreneceksiniz.
Apache’nin mod_proxy modülü sayesinde gelen HTTP(S) isteklerini arka uç uygulama sunucularına yönlendirebilirsiniz.
Reverse proxy kullanımı özellikle şu durumlarda tercih edilir:
- Backend sunucuları gizlemek
- Trafiği birden fazla sunucuya dağıtmak
- SSL yönetimini merkezi hale getirmek
- Performansı artırmak
Bu Rehberde Ne Öğreneceksiniz?
Bu rehberde aşağıdaki konular adım adım anlatılmaktadır:
- Apache mod_proxy modüllerini etkinleştirme
- Tek backend sunucuya reverse proxy kurma
- Load balancing yapılandırması
- Test backend sunucuları oluşturma (Flask)
- ProxyPass ve ProxyPassReverse mantığı
1. Apache mod_proxy Modüllerini Etkinleştirme
Reverse proxy kullanabilmek için bazı Apache modüllerinin aktif olması gerekir.
Gerekli modüller:
mod_proxymod_proxy_httpmod_proxy_balancermod_lbmethod_byrequests
Modülleri etkinleştirmek için:
sudo a2enmod proxy proxy_http proxy_balancer lbmethod_byrequests
Apache’yi yeniden başlatın:
sudo systemctl restart apache2
2. Test Backend Sunucuları Oluşturma (İsteğe Bağlı)
Reverse proxy yapılandırmasını test etmek için küçük bir Flask uygulaması kullanabilirsiniz.
Gerekli paketleri kurun:
sudo apt update
sudo apt install python3-pip
sudo pip3 install flask
Backend 1 oluşturma:
nano ~/backend1.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def home():
return "Backend Sunucu 1"
if __name__ == "__main__":
app.run(port=8080)
Backend 2 oluşturma:
cp ~/backend1.py ~/backend2.py
nano ~/backend2.py
Mesajı değiştirin:
return "Backend Sunucu 2"
Backend sunucularını başlatma
FLASK_APP=~/backend1.py flask run --port=8080 &
FLASK_APP=~/backend2.py flask run --port=8081 &
3. Apache Reverse Proxy Yapılandırması
Apache yapılandırmasını VirtualHost üzerinden yapacağız.
VirtualHost dosyasını açın:
sudo nano /etc/apache2/sites-available/000-default.conf
Tek Backend Sunucuya Reverse Proxy:
<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>
Apache’yi yeniden başlatın
sudo systemctl restart apache2
Artık gelen tüm HTTP istekleri 8080 portundaki backend sunucuya yönlendirilir.
Load Balancing Yapılandırması
Birden fazla backend sunucu kullanarak yük dengelemesi yapabilirsiniz.
Load Balancer yapılandırması:
<VirtualHost *:80>
<Proxy "balancer://uygulama_havuzu">
BalancerMember http://127.0.0.1:8080
BalancerMember http://127.0.0.1:8081
</Proxy>
ProxyPreserveHost On
ProxyPass / balancer://uygulama_havuzu/
ProxyPassReverse / balancer://uygulama_havuzu/
</VirtualHost>
Apache’yi yeniden başlatın:
sudo systemctl restart apache2
Sayfayı her yenilediğinizde Apache isteği farklı backend sunucularına yönlendirecektir.
Sıkça Sorulan Sorular
Reverse proxy ile forward proxy arasındaki fark nedir?
Forward Proxy → istemciyi gizler Reverse Proxy → backend sunucuları gizler
Reverse proxy neden kullanılır?
Başlıca avantajları:
Güvenlik Load balancing SSL offloading Merkezi trafik yönetimi Performans artışı
HTTPS backend kullanabilir miyim?
Evet. ProxyPass içerisinde https:// kullanmanız yeterlidir.
Örnek:
ProxyPass / https://127.0.0.1:8443/
Kaç backend sunucu ekleyebilirim?
Apache teorik olarak çok sayıda backend sunucu yönetebilir. Pratikte bu sayı sistem kaynaklarına bağlıdır.
Sonuç
Bu rehber ile:
Apache mod_proxy modülünü etkinleştirdiniz Reverse proxy yapılandırmasını öğrendiniz Load balancing kurulumunu yaptınız
Bu mimari özellikle:
Node.js uygulamaları Python (Flask / Django) Java servisleri Mikroservis mimarileri
için oldukça güçlü bir çözümdür.
Bu yapılandırmayı Rabisu Bulut sunucularınızda kolayca uygulayabilirsiniz.