Ana içeriğe geç

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_proxy
  • mod_proxy_http
  • mod_proxy_balancer
  • mod_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.