Ubuntu 16.04 Sunucuya Nginx Reverse Proxy Kurulumu

Ubuntu 16.04 Sunucuya Nginx Reverse Proxy Kurulumu

Merhaba,

Ubuntu 16.04 işletim sistemine sahip sanal sunucumuza Nginx Reverse Proxy kurulumunu anlatacağım. Apache ve  Nginx ücretsiz ve açık kaynak kodlu web server işlemcileridir. Nginx, Apache’ye oranla daha hızlı,az veri kullanır ve kullanımı kolay bir yapıya sahiptir. Apache ise çok fazla sistem verisi kullanır ve kullanımı karmaşıktır. Bu yüzden bu yazımızda sizlere Apache’yi arkaplanda çalıştırıp, ön planda ise Nginx’i çalıştıracağız.

Nginx ön planda çalışırken birçok işlemi rahatlıkla yerine getirmektedir. Aynı zamanda birçok php uygulamalarınızıda rahatlıkla kullanabiliyorsunuz. Nginx sunucularda en sık rastlanan sorun .htaccess ve Apache modüllerini kullanamamanızdır. İşte Reverse Proxy bu noktada devreye giren bir işlemdir. Apache arkaplanda sizin istediğiniz modülleri çalıştırıyorken ön tarafta da Nginx statik dosyalarınızı sunmaya devam ediyor, bütün bunları yaparken’de performans kaybetmiyor hatta sunucunuz daha stabil ve hızlı çalışıyor.

APACHE 2 VE NGİNX KURULUM AŞAMASI

Bu kurulum rehberi sıfırdan kurulmuş,temiz, daha önce üzerinde panel kurulumu ya da web server kurulumu gerçekleştirilmemiş Ubuntu 16.04 sürümlü bir sunucuda denenmiştir. Kuruluma başlamadan önce sunucunuzda eğer daha önce bir kurulum yaptıysanız sunucunuzu sıfırlayıp, temiz bir Ubuntu 16.04  kurun.

İlk önce varolan Ubuntu ve Apache’nin güncellemesini gerçekleştireceğiz. Bu sayede en son güvenlik ve bug/hata güncellemelerini sunucumuza yüklemiş ve stabil bir işletim sistemine sahip olacağız.

Konsol ekranına aşağıda ki komutu girin ve devam edin.

$ apt-get update && apt-get upgrade -y && shutdown -r now

Şimdi standart Apache 2 kurulum dosyalarını sunucumuza yükleyelim.

$ apt-get install apache2 -y
$ apt-get install php libapache2-mod-php php-mcrypt -y

Bu işlem bittikten sonra şimdi Apache’nin Tweak ayarlarından port ayarlarını yapılandırmamız gerekiyor. Apache’yi Nginx’in arkasında çalıştıracağımız için apachenin dinleme portunu değiştireceğiz ve böylelikle Apache’miz Nginx işlemcisinin arkasında çalışmaya başlayacak.

Konsol ekranına yazın:

$ nano /etc/apache2/ports.conf

Açılan sayfada aşağıda ki satırı bulun:

Listen 80

Bununla değiştirin:

Listen 8080

Bu işlemi yaptıktan sonra dosyayı kaydedin ve çıkın.

Şimdi ise PHP modüllerini aktif etmemiz gerekiyor.

Aşağıda ki komutu konsol’a yazınız:

$ nano /etc/apache2/mods-enabled/dir.conf

Bu satırı bulun:

<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

Daha sonra index.php’den önce ekleyin:

<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

Dosyayı kaydedip, çıkın.

Daha sonra php modülünü test etmek için bir adet index.php dosyası oluşturun ve ana dizine atınız. Dosyanın içine aşağıda ki kodları ekleyin.

<?php
phpinfo();
?>

Daha sonra aşağıda ki komutu konsol ekranınıza girin ve ana dizine index.php dosyasını çağırıyoruz.

$ cd /var/www/html
$ nano index.php

Bu işlemi yaptıktan sonra kaydedip, çıkın. Daha sonra sayfanın çalışıp, çalışmadığına bakmak için test edin. http://sunucunun_ip_adresi:8080/ yazarak sayfanın çalışıp, çalışmadığını görünüz.

Apache’yle ilgili gerekli düzenlemeleri yaptık. Şimdi ise sunucumuza Nginx’i kurmaya. Aşağıda ki komutu konsol ekranızda girerek Nginx’in kurulumunu başlatın.

$ apt-get install nginx -y

Nginx kurulumu bittikten sonra, sunucumuzun performansını artırmak adına aşağıda ki işlemi gerçekleştirin. Kodları konsol ekranına yazıp devam edin.

$ nano /etc/nginx/nginx.conf
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

Daha sonra aşağıda ki kodları gzip_types kısmından sonra ki satıra ekleyin.

# Proxy Cache Settings
proxy_cache_path /var/cache levels=1:2 keys_zone=reverse_cache:60m inactive=90m max_size=1000m;

Kaydedin ve çıkın. Daha sonra php uygulamalarımızı nginx üzerinden apache bildirmek için aşağıda ki adımları yapınız.

Konsol ekranına bu komutu giriniz:

$ nano /etc/nginx/sites-enabled/default

Açılan sayfada bul:

# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;

Bununla komple Değiştir:

# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.html;

Bu işlemi yaptıktan sonra kodların hemen altına aşağıda ki kodları ekleyin:

server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}

Yukarıda ki kodlardan sonra aşağıda ki kodlarıda ekleyiniz:

# Reverse Proxy and Proxy Cache Configuration
location ~ \.php$ {proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;# Cache configuration
proxy_cache reverse_cache;
proxy_cache_valid 3s;
proxy_no_cache $cookie_PHPSESSID;
proxy_cache_bypass $cookie_PHPSESSID;
proxy_cache_key "$scheme$host$request_uri";
add_header X-Cache $upstream_cache_status;
}
# Enable Cache the file 30 days
location ~* .(jpg|png|gif|jpeg|css|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)$ {
proxy_cache_valid 200 120m;
expires 30d;
proxy_cache reverse_cache;
access_log off;
}
# Disable Cache for the file type html, json
location ~* .(?:manifest|appcache|html?|xml|json)$ {
expires -1;
}
location ~ /\.ht {
deny all;
}

Daha sonra dosyayı kaydedip, çıkın.

Evet herşey bitti. Apache ve nginx servislerini restart yapıp, yeniden başlatın sunucunuzu ve sunucunuz kullanıma hazır olacaktır.Bütün bunları yaptıktan sonra http://İP-Adresiniz ile giriş yaptığınızda ana dizine attığımız index.php dosyası aktif olacak ve PHP bilgilerinizi görüntülüyor olacaksınız.

Kolay gelsin.