{"id":36399,"date":"2025-12-15T19:41:02","date_gmt":"2025-12-15T16:41:02","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=36399"},"modified":"2025-12-15T19:41:02","modified_gmt":"2025-12-15T16:41:02","slug":"nginxi-ubuntu-14-04-uzerinde-apache-icin-bir-web-sunucusu-ve-ters-proxy-olarak-yapilandirma","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/nginxi-ubuntu-14-04-uzerinde-apache-icin-bir-web-sunucusu-ve-ters-proxy-olarak-yapilandirma\/","title":{"rendered":"Nginx&#8217;i Ubuntu 14.04 \u00dczerinde Apache i\u00e7in Bir Web Sunucusu ve Ters Proxy Olarak Yap\u0131land\u0131rma"},"content":{"rendered":"<p><body><\/p>\n<h2>Nginx&#8217;i Ubuntu 14.04 \u00dczerinde Apache i\u00e7in Bir Web Sunucusu ve Ters Proxy Olarak Yap\u0131land\u0131rma<\/h2>\n<p>Web sunucusu mimarileri, performans ve \u00f6l\u00e7eklenebilirlik ihtiya\u00e7lar\u0131na g\u00f6re s\u00fcrekli evrim ge\u00e7irmektedir. Tek bir sunucu \u00fczerinde bile, farkl\u0131 web sunucusu yaz\u0131l\u0131mlar\u0131n\u0131n g\u00fc\u00e7l\u00fc y\u00f6nlerini birle\u015ftirerek \u00f6nemli avantajlar elde edilebilir. Bu makalede, Ubuntu 14.04 i\u015fletim sistemi y\u00fckl\u00fc bir sunucuda (droplet), Nginx&#8217;i hem statik i\u00e7erik sunucusu hem de Apache i\u00e7in bir ters proxy (reverse proxy) olarak nas\u0131l yap\u0131land\u0131raca\u011f\u0131m\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Bu yap\u0131land\u0131rma, \u00f6zellikle y\u00fcksek trafikli siteler i\u00e7in performans\u0131 art\u0131rma, kaynak t\u00fcketimini optimize etme ve daha esnek bir mimari olu\u015fturma potansiyeli sunar.<\/p>\n<h3>Neden Nginx ve Apache Birlikte Kullan\u0131lmal\u0131?<\/h3>\n<p>Nginx ve Apache, her ikisi de d\u00fcnya genelinde yayg\u0131n olarak kullan\u0131lan g\u00fc\u00e7l\u00fc web sunucusu yaz\u0131l\u0131mlar\u0131d\u0131r. Ancak her birinin kendine \u00f6zg\u00fc g\u00fc\u00e7l\u00fc y\u00f6nleri ve kullan\u0131m senaryolar\u0131 vard\u0131r:<\/p>\n<p>*   <strong>Nginx&#8217;in G\u00fc\u00e7l\u00fc Y\u00f6nleri:<\/strong><br \/>\n    *   <strong>Performans ve E\u015fzamanl\u0131 Ba\u011flant\u0131lar:<\/strong> Nginx, olay tabanl\u0131 (event-driven) mimarisi sayesinde y\u00fcksek say\u0131da e\u015fzamanl\u0131 ba\u011flant\u0131y\u0131 d\u00fc\u015f\u00fck bellek ve CPU t\u00fcketimiyle i\u015fleyebilir. \u00d6zellikle statik dosyalar\u0131n (HTML, CSS, JavaScript, resimler vb.) sunumunda Apache&#8217;den \u00e7ok daha h\u0131zl\u0131d\u0131r.<br \/>\n    *   <strong>Ters Proxy Yetenekleri:<\/strong> Nginx, ters proxy, y\u00fck dengeleyici (load balancer) ve HTTP \u00f6nbellek sunucusu olarak m\u00fckemmel yeteneklere sahiptir.<br \/>\n    *   <strong>D\u00fc\u015f\u00fck Kaynak T\u00fcketimi:<\/strong> Daha az bellek ve CPU kullanarak y\u00fcksek performans sunar.<\/p>\n<p>*   <strong>Apache&#8217;nin G\u00fc\u00e7l\u00fc Y\u00f6nleri:<\/strong><br \/>\n    *   <strong>Mod\u00fcl Zenginli\u011fi ve Esneklik:<\/strong> Apache, geni\u015f bir mod\u00fcl ekosistemine sahiptir (mod_php, mod_rewrite vb.) ve dinamik i\u00e7erik i\u015fleme konusunda son derece esnektir.<br \/>\n    *   <strong>Olgunluk ve Topluluk Deste\u011fi:<\/strong> Y\u0131llard\u0131r geli\u015ftirilen ve geni\u015f bir kullan\u0131c\u0131 kitlesine sahip olan Apache, \u00e7ok say\u0131da dok\u00fcmantasyon ve topluluk deste\u011fi sunar.<br \/>\n    *   <strong>Dinamik \u0130\u00e7erik \u0130\u015fleme:<\/strong> PHP, Python, Ruby gibi dillerle yaz\u0131lm\u0131\u015f web uygulamalar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in hala tercih edilen g\u00fc\u00e7l\u00fc bir platformdur.<\/p>\n<p>Bu iki sunucuyu bir araya getirerek, Nginx&#8217;i h\u0131zl\u0131 bir \u00f6n u\u00e7 (frontend) olarak kullanarak statik i\u00e7erikleri verimli bir \u015fekilde sunabilir, gelen t\u00fcm istekleri filtreleyebilir ve sadece dinamik i\u00e7erik gerektiren istekleri Apache&#8217;ye y\u00f6nlendirebiliriz. Bu sayede Apache&#8217;nin kaynaklar\u0131 sadece dinamik i\u00e7erik i\u015fleme i\u00e7in kullan\u0131l\u0131r, bu da genel performans\u0131 ve sunucu kararl\u0131l\u0131\u011f\u0131n\u0131 art\u0131r\u0131r.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<p>Bu yap\u0131land\u0131rmaya ba\u015flamadan \u00f6nce a\u015fa\u011f\u0131daki \u00f6n gereksinimlere sahip oldu\u011funuzdan emin olun:<\/p>\n<p>*   <strong>Ubuntu 14.04 Droplet\/Sunucu:<\/strong> Bu makale \u00f6zellikle Ubuntu 14.04 \u00fczerine odaklanm\u0131\u015ft\u0131r. Temel prensipler di\u011fer Debian tabanl\u0131 sistemler i\u00e7in de ge\u00e7erli olsa da, komutlar ve dosya yollar\u0131 farkl\u0131l\u0131k g\u00f6sterebilir.<br \/>\n*   <strong>Sudo Yetkileri:<\/strong> Sunucuda root veya sudo yetkilerine sahip bir kullan\u0131c\u0131.<br \/>\n*   <strong>Temel Linux Komut Bilgisi:<\/strong> Dosya d\u00fczenleme, servis y\u00f6netimi gibi temel komutlara a\u015final\u0131k.<br \/>\n*   <strong>Apache2 Kurulumu:<\/strong> Sunucunuzda Apache2&#8217;nin kurulu ve \u00e7al\u0131\u015f\u0131r durumda olmas\u0131 gerekmektedir. E\u011fer kurulu de\u011filse, a\u015fa\u011f\u0131daki komutlarla kurabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get update\n    sudo apt-get install apache2<\/code><\/pre>\n<p>*   <strong>Alan Ad\u0131:<\/strong> Yap\u0131land\u0131rma i\u00e7in bir alan ad\u0131na sahip olman\u0131z ve DNS kay\u0131tlar\u0131n\u0131n sunucunuzun IP adresine y\u00f6nlendirilmi\u015f olmas\u0131 \u00f6nerilir. Bu makalede <code>example.com<\/code> alan ad\u0131n\u0131 kullanaca\u011f\u0131z.<\/p>\n<h3>Ad\u0131m 1: Apache&#8217;yi Haz\u0131rlama<\/h3>\n<p>Nginx, varsay\u0131lan olarak 80 (HTTP) ve 443 (HTTPS) portlar\u0131n\u0131 dinleyecektir. Bu nedenle, Apache&#8217;nin bu portlar\u0131 kullanmas\u0131n\u0131 engellemek i\u00e7in dinleme portunu de\u011fi\u015ftirmemiz gerekmektedir. Apache&#8217;yi genellikle 8080 veya 8000 gibi farkl\u0131 bir porta y\u00f6nlendirece\u011fiz. Bu sayede Nginx, gelen t\u00fcm web trafi\u011fini kar\u015f\u0131layacak ve dinamik i\u00e7erik isteklerini Apache&#8217;ye iletecektir.<\/p>\n<h4>Apache Dinleme Portunu De\u011fi\u015ftirme<\/h4>\n<p>Apache&#8217;nin dinledi\u011fi portu de\u011fi\u015ftirmek i\u00e7in iki ana yap\u0131land\u0131rma dosyas\u0131n\u0131 d\u00fczenlememiz gerekir:<\/p>\n<p>1.  <strong><code>\/etc\/apache2\/ports.conf<\/code>:<\/strong> Bu dosya, Apache&#8217;nin hangi portlar\u0131 dinleyece\u011fini global olarak tan\u0131mlar.<br \/>\n    Bir metin d\u00fczenleyici ile dosyay\u0131 a\u00e7\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/apache2\/ports.conf<\/code><\/pre>\n<p>    Dosya i\u00e7inde <code>Listen 80<\/code> sat\u0131r\u0131n\u0131 bulup <code>Listen 8080<\/code> olarak de\u011fi\u015ftirin (veya istedi\u011finiz ba\u015fka bir port). E\u011fer <code>Listen 443<\/code> sat\u0131r\u0131 varsa, SSL yap\u0131land\u0131rmas\u0131 Nginx taraf\u0131ndan yap\u0131lacaksa bunu da de\u011fi\u015ftirebilirsiniz, ancak \u015fimdilik 80 portuna odaklanal\u0131m.<br \/>\n    De\u011fi\u015fiklik sonras\u0131 dosya i\u00e7eri\u011fi a\u015fa\u011f\u0131daki gibi g\u00f6r\u00fcnebilir (\u00f6nemli k\u0131s\u0131mlar):<\/p>\n<pre><code class=\"language-apache\"># If you just change the port that Apache is listening on here,\n    # you will also need to change any VirtualHost statement that\n    # uses a port number.\n    #\n    Listen 8080\n\n    <IfModule ssl_module>\n            Listen 443\n    <\/IfModule>\n\n    <IfModule mod_gnutls.c>\n            Listen 443\n    <\/IfModule><\/code><\/pre>\n<p>2.  <strong>Sanal Host Yap\u0131land\u0131rmas\u0131:<\/strong> Apache&#8217;nin sanal host yap\u0131land\u0131rmas\u0131n\u0131 da g\u00fcncellemeli, b\u00f6ylece yeni port \u00fczerinden dinleme yapar. Varsay\u0131lan sanal host dosyas\u0131 genellikle <code>\/etc\/apache2\/sites-available\/000-default.conf<\/code>&#8216;tur.<br \/>\n    Dosyay\u0131 a\u00e7\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/apache2\/sites-available\/000-default.conf<\/code><\/pre>\n<p>    Dosya i\u00e7inde <code><VirtualHost <em>:80><\/code> sat\u0131r\u0131n\u0131 bulup <code><VirtualHost <\/em>:8080><\/code> olarak de\u011fi\u015ftirin.<br \/>\n    \u00d6rnek:<\/p>\n<pre><code class=\"language-apache\"><VirtualHost *:8080>\n            # ... di\u011fer yap\u0131land\u0131rmalar ...\n            ServerAdmin webmaster@localhost\n            DocumentRoot \/var\/www\/html\n\n            # ...\n    <\/VirtualHost><\/code><\/pre>\n<p>    E\u011fer ba\u015fka sanal host dosyalar\u0131n\u0131z varsa (\u00f6rne\u011fin <code>example.com.conf<\/code>), ayn\u0131 de\u011fi\u015fikli\u011fi onlar i\u00e7in de yapmal\u0131s\u0131n\u0131z.<\/p>\n<h4>Apache&#8217;yi Yeniden Ba\u015flatma ve Test Etme<\/h4>\n<p>Yap\u0131land\u0131rma de\u011fi\u015fikliklerini uygulamak i\u00e7in Apache servisini yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo service apache2 restart<\/code><\/pre>\n<p>Apache&#8217;nin yeni port \u00fczerinden dinleyip dinlemedi\u011fini kontrol etmek i\u00e7in <code>netstat<\/code> komutunu kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo netstat -tulnp | grep apache2<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>0.0.0.0:8080<\/code> veya <code>127.0.0.1:8080<\/code> gibi bir sat\u0131r g\u00f6rmelisiniz.<br \/>\n\u015eimdi, taray\u0131c\u0131n\u0131zdan sunucunuzun IP adresini ve yeni portu kullanarak Apache&#8217;ye do\u011frudan eri\u015fmeyi deneyin (\u00f6rn. <code>http:\/\/sunucu_ip_adresi:8080<\/code>). Apache&#8217;nin varsay\u0131lan &#8220;It works!&#8221; sayfas\u0131 veya sitenizin i\u00e7eri\u011fi g\u00f6r\u00fcnmelidir.<\/p>\n<h3>Ad\u0131m 2: Nginx Kurulumu<\/h3>\n<p>Apache&#8217;yi haz\u0131rlad\u0131ktan sonra, Nginx&#8217;i kurmaya ge\u00e7ebiliriz.<\/p>\n<h4>Nginx Paketlerini Y\u00fckleme<\/h4>\n<p>\u00d6ncelikle paket listesini g\u00fcncelleyin ve Nginx&#8217;i y\u00fckleyin:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get update\nsudo apt-get install nginx<\/code><\/pre>\n<p>Kurulum tamamland\u0131ktan sonra Nginx servisi otomatik olarak ba\u015flayacakt\u0131r.<\/p>\n<h4>Nginx Servis Durumunu Kontrol Etme<\/h4>\n<p>Nginx&#8217;in \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo service nginx status<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>nginx is running<\/code> veya benzer bir ifade g\u00f6rmelisiniz.<\/p>\n<h4>G\u00fcvenlik Duvar\u0131 Ayarlar\u0131 (UFW)<\/h4>\n<p>Ubuntu 14.04&#8217;te UFW (Uncomplicated Firewall) kullan\u0131yorsan\u0131z, Nginx&#8217;in web trafi\u011fi alabilmesi i\u00e7in 80 (HTTP) ve iste\u011fe ba\u011fl\u0131 olarak 443 (HTTPS) portlar\u0131na izin vermeniz gerekir.<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow 'Nginx HTTP'\nsudo ufw allow 'Nginx HTTPS' # E\u011fer HTTPS kullanacaksan\u0131z\nsudo ufw enable # E\u011fer UFW etkin de\u011filse etkinle\u015ftirin\nsudo ufw status # Ayarlar\u0131n\u0131z\u0131 kontrol edin<\/code><\/pre>\n<p>\u015eimdi taray\u0131c\u0131n\u0131zdan sunucunuzun IP adresini yazarak Nginx&#8217;in varsay\u0131lan kar\u015f\u0131lama sayfas\u0131n\u0131 g\u00f6rmelisiniz. E\u011fer g\u00f6r\u00fcyorsan\u0131z, Nginx ba\u015far\u0131yla kurulmu\u015f ve \u00e7al\u0131\u015f\u0131yor demektir.<\/p>\n<h3>Ad\u0131m 3: Nginx&#8217;i Ters Proxy Olarak Yap\u0131land\u0131rma<\/h3>\n<p>Bu ad\u0131mda, Nginx&#8217;i <code>example.com<\/code> alan ad\u0131 i\u00e7in bir ters proxy olarak yap\u0131land\u0131raca\u011f\u0131z. Nginx, 80 numaral\u0131 porttan gelen istekleri kar\u015f\u0131layacak ve bu istekleri Apache&#8217;nin 8080 numaral\u0131 portuna y\u00f6nlendirecektir.<\/p>\n<h4>Yeni Bir Nginx Sunucu Blo\u011fu Olu\u015fturma<\/h4>\n<p>Nginx yap\u0131land\u0131rmalar\u0131 <code>\/etc\/nginx\/sites-available\/<\/code> dizininde bulunur. Yeni bir yap\u0131land\u0131rma dosyas\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/nginx\/sites-available\/example.com.conf<\/code><\/pre>\n<p>Dosyan\u0131n i\u00e7ine a\u015fa\u011f\u0131daki i\u00e7eri\u011fi ekleyin. Bu yap\u0131land\u0131rma, t\u00fcm gelen istekleri Apache&#8217;ye y\u00f6nlendirecektir:<\/p>\n<pre><code class=\"language-nginx\">server {\n    listen 80;\n    listen [::]:80;\n\n    server_name example.com www.example.com;\n\n    access_log \/var\/log\/nginx\/example.com_access.log;\n    error_log \/var\/log\/nginx\/example.com_error.log;\n\n    location \/ {\n        proxy_pass http:\/\/127.0.0.1:8080;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_read_timeout 90;\n        proxy_connect_timeout 90;\n        proxy_send_timeout 90;\n        proxy_buffer_size 128k;\n        proxy_buffers 4 256k;\n        proxy_busy_buffers_size 256k;\n    }\n}<\/code><\/pre>\n<p><strong>Yap\u0131land\u0131rma A\u00e7\u0131klamalar\u0131:<\/strong><\/p>\n<p>*   <strong><code>listen 80;<\/code><\/strong>: Nginx&#8217;in 80 numaral\u0131 porttan gelen HTTP isteklerini dinlemesini sa\u011flar.<br \/>\n*   <strong><code>server_name example.com www.example.com;<\/code><\/strong>: Bu sunucu blo\u011funun hangi alan adlar\u0131 i\u00e7in ge\u00e7erli oldu\u011funu belirtir. Kendi alan ad\u0131n\u0131z\u0131 buraya yaz\u0131n.<br \/>\n*   <strong><code>access_log<\/code> ve <code>error_log<\/code><\/strong>: Bu sunucu blo\u011funa \u00f6zel eri\u015fim ve hata g\u00fcnl\u00fcklerinin kaydedilece\u011fi yerleri belirtir.<br \/>\n*   <strong><code>location \/ { ... }<\/code><\/strong>: Bu blok, t\u00fcm gelen istekleri (<code>\/<\/code> ile ba\u015flayan her \u015feyi) i\u015fler.<br \/>\n*   <strong><code>proxy_pass http:\/\/127.0.0.1:8080;<\/code><\/strong>: \u0130\u015fte ters proxy&#8217;nin kalbi. Nginx&#8217;e, bu <code>location<\/code> blo\u011funa uyan istekleri <code>http:\/\/127.0.0.1:8080<\/code> adresine (yani yerel sunucudaki Apache&#8217;ye) iletmesini s\u00f6yler.<br \/>\n*   <strong><code>proxy_set_header Host $host;<\/code><\/strong>: Bu ba\u015fl\u0131k, orijinal <code>Host<\/code> ba\u015fl\u0131\u011f\u0131n\u0131 Apache&#8217;ye iletir. Bu, Apache&#8217;nin sanal hostlar\u0131n\u0131 do\u011fru bir \u015fekilde tan\u0131mas\u0131 i\u00e7in kritik \u00f6neme sahiptir.<br \/>\n*   <strong><code>proxy_set_header X-Real-IP $remote_addr;<\/code><\/strong>: Ger\u00e7ek istemcinin IP adresini Apache&#8217;ye iletir. Bu olmazsa, Apache t\u00fcm istekleri Nginx&#8217;in IP adresinden (127.0.0.1) geliyormu\u015f gibi g\u00f6recektir.<br \/>\n*   <strong><code>proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<\/code><\/strong>: Bu da istemcinin IP adresini ileten standart bir ba\u015fl\u0131k olup, proxy zincirindeki t\u00fcm IP&#8217;leri g\u00f6sterebilir.<br \/>\n*   <strong><code>proxy_set_header X-Forwarded-Proto $scheme;<\/code><\/strong>: \u0130stemcinin hangi protokol\u00fc (HTTP veya HTTPS) kulland\u0131\u011f\u0131n\u0131 Apache&#8217;ye bildirir. SSL sonland\u0131rmas\u0131 Nginx&#8217;te yap\u0131ld\u0131\u011f\u0131nda \u00f6nemlidir.<br \/>\n*   <strong><code>proxy_read_timeout<\/code>, <code>proxy_connect_timeout<\/code>, <code>proxy_send_timeout<\/code><\/strong>: Proxy ba\u011flant\u0131lar\u0131 i\u00e7in zaman a\u015f\u0131m\u0131 de\u011ferlerini belirler.<br \/>\n*   <strong><code>proxy_buffer_size<\/code>, <code>proxy_buffers<\/code>, <code>proxy_busy_buffers_size<\/code><\/strong>: Proxy tamponlama ayarlar\u0131, \u00f6zellikle b\u00fcy\u00fck dosyalar veya yo\u011fun trafik i\u00e7in performans\u0131 etkileyebilir.<\/p>\n<h4>Sunucu Blo\u011funu Etkinle\u015ftirme<\/h4>\n<p>Yap\u0131land\u0131rma dosyas\u0131n\u0131 olu\u015fturduktan sonra, Nginx&#8217;in onu tan\u0131mas\u0131 i\u00e7in <code>\/etc\/nginx\/sites-enabled\/<\/code> dizinine bir sembolik ba\u011flant\u0131 olu\u015fturmal\u0131y\u0131z:<\/p>\n<pre><code class=\"language-bash\">sudo ln -s \/etc\/nginx\/sites-available\/example.com.conf \/etc\/nginx\/sites-enabled\/<\/code><\/pre>\n<p>Varsay\u0131lan Nginx yap\u0131land\u0131rmas\u0131n\u0131 (ki bu da 80 portunu dinler) devre d\u0131\u015f\u0131 b\u0131rakmak iyi bir uygulamad\u0131r, aksi takdirde \u00e7ak\u0131\u015fmalar ya\u015fanabilir:<\/p>\n<pre><code class=\"language-bash\">sudo rm \/etc\/nginx\/sites-enabled\/default<\/code><\/pre>\n<h4>Nginx Yap\u0131land\u0131rmas\u0131n\u0131 Test Etme ve Yeniden Ba\u015flatma<\/h4>\n<p>De\u011fi\u015fiklikleri uygulamadan \u00f6nce Nginx yap\u0131land\u0131rmas\u0131n\u0131n s\u00f6zdizimini kontrol edin:<\/p>\n<pre><code class=\"language-bash\">sudo nginx -t<\/code><\/pre>\n<p>E\u011fer \u00e7\u0131kt\u0131 <code>syntax is ok<\/code> ve <code>test is successful<\/code> diyorsa, Nginx&#8217;i yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo service nginx restart<\/code><\/pre>\n<h4>Test Etme<\/h4>\n<p>\u015eimdi taray\u0131c\u0131n\u0131zdan <code>http:\/\/example.com<\/code> (kendi alan ad\u0131n\u0131z\u0131 kullanarak) adresine eri\u015fin. Apache&#8217;nin 8080 portundan sundu\u011fu i\u00e7eri\u011fi g\u00f6rmelisiniz. Bu, Nginx&#8217;in ba\u015far\u0131yla bir ters proxy olarak \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6sterir.<\/p>\n<h3>Ad\u0131m 4: Nginx&#8217;i Statik Dosyalar i\u00e7in Web Sunucusu Olarak Yap\u0131land\u0131rma (Opsiyonel ama \u00d6nemli)<\/h3>\n<p>Nginx&#8217;in en b\u00fcy\u00fck avantajlar\u0131ndan biri statik dosyalar\u0131 Apache&#8217;den \u00e7ok daha verimli bir \u015fekilde sunabilmesidir. Bu ad\u0131mda, Nginx&#8217;i belirli dosya t\u00fcrlerini do\u011frudan kendisinin sunmas\u0131 i\u00e7in yap\u0131land\u0131raca\u011f\u0131z. Bu, Apache \u00fczerindeki y\u00fck\u00fc \u00f6nemli \u00f6l\u00e7\u00fcde azaltacakt\u0131r.<\/p>\n<p><code>example.com.conf<\/code> dosyas\u0131n\u0131 tekrar d\u00fczenleyin:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/nginx\/sites-available\/example.com.conf<\/code><\/pre>\n<p><code>location \/ { ... }<\/code> blo\u011fundan \u00f6nce veya sonra a\u015fa\u011f\u0131daki <code>location<\/code> blo\u011funu ekleyin:<\/p>\n<pre><code class=\"language-nginx\">server {\n    listen 80;\n    listen [::]:80;\n\n    server_name example.com www.example.com;\n\n    access_log \/var\/log\/nginx\/example.com_access.log;\n    error_log \/var\/log\/nginx\/example.com_error.log;\n\n    # Statik dosyalar\u0131 Nginx'in kendisi sunar\n    location ~* \\.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg|eot)$ {\n        root \/var\/www\/html; # Apache'nin DocumentRoot'u ile ayn\u0131 veya Nginx i\u00e7in ayr\u0131 bir dizin olabilir\n        expires 30d;\n        add_header Cache-Control \"public, no-transform\";\n        try_files $uri @apache; # E\u011fer dosya bulunamazsa Apache'ye y\u00f6nlendir\n    }\n\n    # Dinamik istekleri Apache'ye y\u00f6nlendir\n    location \/ {\n        proxy_pass http:\/\/127.0.0.1:8080;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_read_timeout 90;\n        proxy_connect_timeout 90;\n        proxy_send_timeout 90;\n        proxy_buffer_size 128k;\n        proxy_buffers 4 256k;\n        proxy_busy_buffers_size 256k;\n    }\n\n    # @apache adland\u0131r\u0131lm\u0131\u015f konumu, try_files taraf\u0131ndan kullan\u0131l\u0131r\n    location @apache {\n        proxy_pass http:\/\/127.0.0.1:8080;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}<\/code><\/pre>\n<p><strong>Eklenen Blok A\u00e7\u0131klamalar\u0131:<\/strong><\/p>\n<p><em>   <strong><code>location ~<\/em> \\.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg|eot)$ { ... }<\/code><\/strong>: Bu blok, belirli dosya uzant\u0131lar\u0131na sahip istekleri yakalar (resimler, CSS, JS, fontlar vb.). <code>~*<\/code> b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyars\u0131z e\u015fle\u015fme yapar.<br \/>\n*   <strong><code>root \/var\/www\/html;<\/code><\/strong>: Nginx&#8217;in bu statik dosyalar\u0131 arayaca\u011f\u0131 k\u00f6k dizini belirtir. Bu genellikle Apache&#8217;nin <code>DocumentRoot<\/code>&#8216;u ile ayn\u0131 olmal\u0131d\u0131r.<br \/>\n*   <strong><code>expires 30d;<\/code><\/strong>: Taray\u0131c\u0131 \u00f6nbelleklemesini etkinle\u015ftirir. Bu, istemcilerin bu dosyalar\u0131 30 g\u00fcn boyunca yerel olarak \u00f6nbelle\u011fe almas\u0131n\u0131 sa\u011flar ve sunucuya tekrar istek g\u00f6ndermelerini engeller.<br \/>\n*   <strong><code>add_header Cache-Control \"public, no-transform\";<\/code><\/strong>: \u00d6nbellekleme ba\u015fl\u0131klar\u0131n\u0131 ekler.<br \/>\n*   <strong><code>try_files $uri @apache;<\/code><\/strong>: Nginx&#8217;in \u00f6nce iste\u011fin URI&#8217;sini (<code>$uri<\/code>) k\u00f6k dizinde bir dosya olarak bulmaya \u00e7al\u0131\u015fmas\u0131n\u0131 s\u00f6yler. E\u011fer bulamazsa, iste\u011fi <code>@apache<\/code> adland\u0131r\u0131lm\u0131\u015f <code>location<\/code> blo\u011funa iletir. Bu, statik dosya bulunamazsa iste\u011fin yine de Apache&#8217;ye gitmesini sa\u011flar.<br \/>\n*   <strong><code>location @apache { ... }<\/code><\/strong>: Bu, <code>try_files<\/code> y\u00f6nergesi taraf\u0131ndan kullan\u0131lan \u00f6zel bir adland\u0131r\u0131lm\u0131\u015f <code>location<\/code> blo\u011fudur. Temel olarak Apache&#8217;ye y\u00f6nlendirme yapar.<\/p>\n<p>Yap\u0131land\u0131rmay\u0131 kaydedin, test edin (<code>sudo nginx -t<\/code>) ve Nginx&#8217;i yeniden ba\u015flat\u0131n (<code>sudo service nginx restart<\/code>). Art\u0131k Nginx, statik dosyalar\u0131 do\u011frudan sunarken, di\u011fer t\u00fcm istekleri Apache&#8217;ye y\u00f6nlendirecektir. Bu, sunucunuzun performans\u0131nda g\u00f6zle g\u00f6r\u00fcl\u00fcr bir iyile\u015fme sa\u011flayacakt\u0131r.<\/p>\n<h3>Ad\u0131m 5: Birden Fazla Alan Ad\u0131 (Virtual Host) Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>Tek bir sunucuda birden fazla web sitesi bar\u0131nd\u0131rmak yayg\u0131n bir senaryodur. Nginx ve Apache kombinasyonunda bunu yapmak olduk\u00e7a basittir. Her alan ad\u0131 i\u00e7in Nginx&#8217;te ayr\u0131 bir <code>server<\/code> blo\u011fu olu\u015fturman\u0131z ve Apache&#8217;de (e\u011fer dinamik i\u00e7erik sunuyorsa) uygun <code>VirtualHost<\/code> yap\u0131land\u0131rmas\u0131na sahip olman\u0131z yeterlidir.<\/p>\n<h4>Nginx Taraf\u0131nda<\/h4>\n<p>Her yeni alan ad\u0131 (\u00f6rn. <code>example2.com<\/code>) i\u00e7in <code>\/etc\/nginx\/sites-available\/example2.com.conf<\/code> ad\u0131nda yeni bir dosya olu\u015fturun. \u0130\u00e7eri\u011fi <code>example.com.conf<\/code>&#8216;a benzer olacakt\u0131r, sadece <code>server_name<\/code> ve <code>access_log<\/code>\/<code>error_log<\/code> yollar\u0131n\u0131 yeni alan ad\u0131na g\u00f6re g\u00fcncelleyin.<\/p>\n<pre><code class=\"language-nginx\">server {\n    listen 80;\n    listen [::]:80;\n\n    server_name example2.com www.example2.com;\n\n    access_log \/var\/log\/nginx\/example2.com_access.log;\n    error_log \/var\/log\/nginx\/example2.com_error.log;\n\n    location ~* \\.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg|eot)$ {\n        root \/var\/www\/example2.com\/html; # Bu alan ad\u0131 i\u00e7in ayr\u0131 bir k\u00f6k dizin\n        expires 30d;\n        add_header Cache-Control \"public, no-transform\";\n        try_files $uri @apache2;\n    }\n\n    location \/ {\n        proxy_pass http:\/\/127.0.0.1:8080; # T\u00fcm dinamik istekler Apache'ye\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n\n    location @apache2 { # Yeni alan ad\u0131 i\u00e7in adland\u0131r\u0131lm\u0131\u015f konum\n        proxy_pass http:\/\/127.0.0.1:8080;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}<\/code><\/pre>\n<p>Yeni yap\u0131land\u0131rma dosyas\u0131n\u0131 etkinle\u015ftirin ve Nginx&#8217;i yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo ln -s \/etc\/nginx\/sites-available\/example2.com.conf \/etc\/nginx\/sites-enabled\/\nsudo nginx -t\nsudo service nginx restart<\/code><\/pre>\n<h4>Apache Taraf\u0131nda<\/h4>\n<p>Apache&#8217;nin sanal hostlar\u0131, Nginx&#8217;ten gelen <code>Host<\/code> ba\u015fl\u0131\u011f\u0131n\u0131 kullanarak hangi siteye ait i\u00e7eri\u011fi sunaca\u011f\u0131n\u0131 belirleyecektir. Bu nedenle, Apache taraf\u0131nda herhangi bir port de\u011fi\u015fikli\u011fi yapman\u0131za gerek yoktur, sadece yeni alan ad\u0131 i\u00e7in bir <code>VirtualHost<\/code> olu\u015fturman\u0131z yeterlidir.<br \/>\n<code>\/etc\/apache2\/sites-available\/example2.com.conf<\/code> gibi bir dosya olu\u015fturun:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/apache2\/sites-available\/example2.com.conf<\/code><\/pre>\n<p>\u0130\u00e7eri\u011fi a\u015fa\u011f\u0131daki gibi olabilir:<\/p>\n<pre><code class=\"language-apache\"><VirtualHost *:8080>\n    ServerAdmin webmaster@example2.com\n    ServerName example2.com\n    ServerAlias www.example2.com\n    DocumentRoot \/var\/www\/example2.com\/html\n\n    <Directory \/var\/www\/example2.com\/html>\n        Options Indexes FollowSymLinks MultiViews\n        AllowOverride All\n        Order allow,deny\n        allow from all\n    <\/Directory>\n\n    ErrorLog ${APACHE_LOG_DIR}\/example2.com_error.log\n    CustomLog ${APACHE_LOG_DIR}\/example2.com_access.log combined\n<\/VirtualHost><\/code><\/pre>\n<p>Yeni Apache sanal hostunu etkinle\u015ftirin ve Apache&#8217;yi yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo a2ensite example2.com.conf\nsudo service apache2 restart<\/code><\/pre>\n<p>Bu yap\u0131land\u0131rma ile Nginx, gelen iste\u011fin <code>Host<\/code> ba\u015fl\u0131\u011f\u0131na bakarak hangi Nginx <code>server<\/code> blo\u011funun e\u015fle\u015fti\u011fini bulur. E\u011fer istek dinamik i\u00e7erikse, Nginx onu Apache&#8217;ye iletir ve Apache de yine <code>Host<\/code> ba\u015fl\u0131\u011f\u0131na bakarak do\u011fru <code>VirtualHost<\/code>&#8216;u bulup i\u00e7eri\u011fi sunar.<\/p>\n<h3>Ad\u0131m 6: Performans ve G\u00fcvenlik \u0130yile\u015ftirmeleri<\/h3>\n<p>Nginx&#8217;i ters proxy olarak kullan\u0131rken performans\u0131 ve g\u00fcvenli\u011fi art\u0131rmak i\u00e7in \u00e7e\u015fitli ek yap\u0131land\u0131rmalar yapabiliriz.<\/p>\n<h4>Nginx \u00d6nbellekleme (Caching)<\/h4>\n<p>Nginx, Apache&#8217;den gelen yan\u0131tlar\u0131 \u00f6nbelle\u011fe alarak tekrar eden dinamik i\u00e7erik istekleri i\u00e7in bile performans\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir. Bu, \u00f6zellikle s\u0131k g\u00fcncellenmeyen dinamik sayfalar i\u00e7in faydal\u0131d\u0131r.<\/p>\n<p>\u00d6nbellekleme i\u00e7in <code>nginx.conf<\/code> dosyas\u0131nda (genellikle <code>\/etc\/nginx\/nginx.conf<\/code>) veya ana sunucu blo\u011funuzun d\u0131\u015f\u0131nda <code>http<\/code> blo\u011funun i\u00e7ine bir <code>proxy_cache_path<\/code> y\u00f6nergesi eklemeniz gerekir:<\/p>\n<pre><code class=\"language-nginx\"># \/etc\/nginx\/nginx.conf dosyas\u0131nda veya http blo\u011funun i\u00e7inde\nhttp {\n    # ... di\u011fer http ayarlar\u0131 ...\n\n    proxy_cache_path \/var\/cache\/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m max_size=1g;\n    proxy_cache_key \"$scheme$request_method$host$request_uri\";\n\n    server {\n        # ... server blo\u011funuz ...\n        location \/ {\n            proxy_cache my_cache;\n            proxy_cache_valid 200 302 10m; # 200 ve 302 yan\u0131tlar\u0131n\u0131 10 dakika \u00f6nbelle\u011fe al\n            proxy_cache_valid 404 1m;     # 404 yan\u0131tlar\u0131n\u0131 1 dakika \u00f6nbelle\u011fe al\n            proxy_cache_bypass $http_pragma $http_authorization; # Belirli durumlarda \u00f6nbelle\u011fi atla\n            proxy_no_cache $http_pragma $http_authorization;     # Belirli durumlarda \u00f6nbelle\u011fe alma\n            add_header X-Proxy-Cache $upstream_cache_status; # \u00d6nbellek durumunu ba\u015fl\u0131\u011fa ekle\n\n            # ... di\u011fer proxy_pass ve proxy_set_header ayarlar\u0131 ...\n        }\n    }\n}<\/code><\/pre>\n<p><strong>A\u00e7\u0131klamalar:<\/strong><br \/>\n*   <strong><code>proxy_cache_path<\/code><\/strong>: \u00d6nbellek dosyalar\u0131n\u0131n saklanaca\u011f\u0131 dizini, \u00f6nbellek seviyelerini, anahtar b\u00f6lgesini (bellekteki meta veriler i\u00e7in), etkin olmayan \u00f6\u011felerin ne kadar s\u00fcre sonra silinece\u011fini ve \u00f6nbelle\u011fin maksimum boyutunu tan\u0131mlar.<br \/>\n*   <strong><code>proxy_cache_key<\/code><\/strong>: \u00d6nbelle\u011fe al\u0131nacak her \u00f6\u011fe i\u00e7in benzersiz bir anahtar olu\u015fturur.<br \/>\n*   <strong><code>proxy_cache my_cache;<\/code><\/strong>: Belirtilen <code>my_cache<\/code> \u00f6nbelle\u011fini kullanmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <strong><code>proxy_cache_valid<\/code><\/strong>: Belirli HTTP durum kodlar\u0131na sahip yan\u0131tlar\u0131n ne kadar s\u00fcreyle \u00f6nbelle\u011fe al\u0131naca\u011f\u0131n\u0131 belirler.<br \/>\n*   <strong><code>proxy_cache_bypass<\/code> ve <code>proxy_no_cache<\/code><\/strong>: \u00d6zellikle oturum bilgisi i\u00e7eren veya yetkilendirme gerektiren istekler i\u00e7in \u00f6nbelleklemenin atlanmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>\u00d6nbellek dizinini olu\u015fturmay\u0131 unutmay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/var\/cache\/nginx\nsudo chown -R www-data:www-data \/var\/cache\/nginx<\/code><\/pre>\n<h4>Gzip S\u0131k\u0131\u015ft\u0131rma<\/h4>\n<p>Nginx, web sayfalar\u0131n\u0131 ve statik dosyalar\u0131 (CSS, JS, HTML) s\u0131k\u0131\u015ft\u0131rarak bant geni\u015fli\u011fi kullan\u0131m\u0131n\u0131 azaltabilir ve y\u00fckleme s\u00fcrelerini h\u0131zland\u0131rabilir. Bu, <code>nginx.conf<\/code> dosyas\u0131nda <code>http<\/code> blo\u011funun i\u00e7inde yap\u0131land\u0131r\u0131l\u0131r:<\/p>\n<pre><code class=\"language-nginx\">http {\n    # ...\n\n    gzip on;\n    gzip_vary on;\n    gzip_proxied any;\n    gzip_comp_level 6;\n    gzip_buffers 16 8k;\n    gzip_http_version 1.1;\n    gzip_types text\/plain text\/css application\/json application\/javascript text\/xml application\/xml application\/xml+rss text\/javascript image\/svg+xml;\n\n    # ...\n}<\/code><\/pre>\n<p><strong>A\u00e7\u0131klamalar:<\/strong><br \/>\n*   <strong><code>gzip on;<\/code><\/strong>: Gzip s\u0131k\u0131\u015ft\u0131rmay\u0131 etkinle\u015ftirir.<br \/>\n*   <strong><code>gzip_vary on;<\/code><\/strong>: <code>Vary: Accept-Encoding<\/code> ba\u015fl\u0131\u011f\u0131n\u0131 ekler.<br \/>\n*   <strong><code>gzip_proxied any;<\/code><\/strong>: T\u00fcm proxy&#8217;lenmi\u015f istekler i\u00e7in s\u0131k\u0131\u015ft\u0131rmay\u0131 etkinle\u015ftirir.<br \/>\n*   <strong><code>gzip_comp_level 6;<\/code><\/strong>: S\u0131k\u0131\u015ft\u0131rma seviyesini belirler (1&#8217;den 9&#8217;a kadar, 6 iyi bir denge).<br \/>\n*   <strong><code>gzip_types<\/code><\/strong>: Hangi MIME t\u00fcrlerinin s\u0131k\u0131\u015ft\u0131r\u0131laca\u011f\u0131n\u0131 belirtir.<\/p>\n<h4>SSL\/TLS Sonland\u0131rma (Nginx \u00dczerinde)<\/h4>\n<p>HTTPS trafi\u011fini Nginx&#8217;te sonland\u0131rmak yayg\u0131n bir uygulamad\u0131r. Bu, Nginx&#8217;in SSL\/TLS \u015fifrelemesini y\u00f6netmesini, sertifikalar\u0131 i\u015flemesini ve \u015fifresi \u00e7\u00f6z\u00fclm\u00fc\u015f HTTP isteklerini Apache&#8217;ye iletmesini sa\u011flar. Bu, Apache \u00fczerindeki y\u00fck\u00fc azalt\u0131r ve Nginx&#8217;in daha verimli SSL i\u015fleme yeteneklerinden faydalan\u0131r.<\/p>\n<p>\u00d6ncelikle bir SSL sertifikas\u0131na ihtiyac\u0131n\u0131z olacakt\u0131r (Let&#8217;s Encrypt ile \u00fccretsiz sertifikalar alabilirsiniz). Sertifika ve anahtar dosyalar\u0131n\u0131 sunucunuza y\u00fckledikten sonra, Nginx sunucu blo\u011funuzu a\u015fa\u011f\u0131daki gibi g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-nginx\">server {\n    listen 80;\n    listen [::]:80;\n    server_name example.com www.example.com;\n\n    # HTTP'den HTTPS'ye y\u00f6nlendirme\n    return 301 https:\/\/$host$request_uri;\n}\n\nserver {\n    listen 443 ssl;\n    listen [::]:443 ssl;\n    server_name example.com www.example.com;\n\n    ssl_certificate \/etc\/letsencrypt\/live\/example.com\/fullchain.pem; # Sertifika yolu\n    ssl_certificate_key \/etc\/letsencrypt\/live\/example.com\/privkey.pem; # \u00d6zel anahtar yolu\n\n    ssl_session_cache shared:SSL:10m;\n    ssl_session_timeout 10m;\n    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;\n    ssl_ciphers \"EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH\";\n    ssl_prefer_server_ciphers on;\n\n    # Statik dosyalar ve proxy_pass ayarlar\u0131 (\u00f6nceki gibi)\n    location ~* \\.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg|eot)$ {\n        root \/var\/www\/html;\n        expires 30d;\n        add_header Cache-Control \"public, no-transform\";\n        try_files $uri @apache;\n    }\n\n    location \/ {\n        proxy_pass http:\/\/127.0.0.1:8080;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme; # Bu ba\u015fl\u0131k Apache'ye HTTPS kullan\u0131ld\u0131\u011f\u0131n\u0131 bildirir\n        # ... di\u011fer proxy ayarlar\u0131 ...\n    }\n\n    location @apache {\n        proxy_pass http:\/\/127.0.0.1:8080;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}<\/code><\/pre>\n<p><strong>A\u00e7\u0131klamalar:<\/strong><br \/>\n*   \u0130lk <code>server<\/code> blo\u011fu, HTTP (80 portu) \u00fczerinden gelen t\u00fcm istekleri HTTPS&#8217;ye y\u00f6nlendirir.<br \/>\n*   \u0130kinci <code>server<\/code> blo\u011fu, HTTPS (443 portu) isteklerini dinler ve SSL\/TLS yap\u0131land\u0131rmas\u0131n\u0131 i\u00e7erir.<br \/>\n*   <strong><code>ssl_certificate<\/code> ve <code>ssl_certificate_key<\/code><\/strong>: Sertifika ve \u00f6zel anahtar dosyalar\u0131n\u0131n yollar\u0131.<br \/>\n*   Di\u011fer <code>ssl_<\/code> y\u00f6nergeleri, SSL g\u00fcvenli\u011fini ve performans\u0131n\u0131 optimize etmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p>Bu de\u011fi\u015fiklikleri yapt\u0131ktan sonra, Nginx&#8217;i yeniden ba\u015flatmay\u0131 ve UFW&#8217;den 443 portuna izin verdi\u011finizden emin olmay\u0131 unutmay\u0131n.<\/p>\n<h4>G\u00fcvenlik Duvar\u0131 (UFW) Ayarlar\u0131<\/h4>\n<p>Son olarak, g\u00fcvenlik duvar\u0131 ayarlar\u0131n\u0131z\u0131 g\u00f6zden ge\u00e7irin. Apache&#8217;nin dinledi\u011fi 8080 portunun d\u0131\u015far\u0131dan eri\u015fime kapal\u0131 oldu\u011fundan emin olun. Sadece Nginx&#8217;in dinledi\u011fi 80 ve 443 portlar\u0131 a\u00e7\u0131k olmal\u0131d\u0131r.<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow 'Nginx Full' # Nginx HTTP ve HTTPS i\u00e7in izin verir\nsudo ufw delete allow 8080 # E\u011fer daha \u00f6nce Apache i\u00e7in 8080 portuna izin verdiyseniz silin\nsudo ufw status<\/code><\/pre>\n<h3>Ad\u0131m 7: Sorun Giderme ve \u0130zleme<\/h3>\n<p>Yap\u0131land\u0131rma s\u0131ras\u0131nda veya sonras\u0131nda sorunlarla kar\u015f\u0131la\u015fman\u0131z durumunda, a\u015fa\u011f\u0131daki ad\u0131mlar sorun gidermeye yard\u0131mc\u0131 olabilir:<\/p>\n<p>*   <strong>Nginx Loglar\u0131:<\/strong><br \/>\n    *   Eri\u015fim Loglar\u0131: <code>\/var\/log\/nginx\/access.log<\/code> (veya <code>example.com_access.log<\/code> gibi \u00f6zel log dosyalar\u0131n\u0131z)<br \/>\n    *   Hata Loglar\u0131: <code>\/var\/log\/nginx\/error.log<\/code> (veya <code>example.com_error.log<\/code> gibi \u00f6zel log dosyalar\u0131n\u0131z)<br \/>\n    Bu log dosyalar\u0131, Nginx&#8217;in istekleri nas\u0131l i\u015fledi\u011fi ve herhangi bir hata olup olmad\u0131\u011f\u0131 hakk\u0131nda de\u011ferli bilgiler sa\u011flar.<\/p>\n<p>*   <strong>Apache Loglar\u0131:<\/strong><br \/>\n    *   Eri\u015fim Loglar\u0131: <code>\/var\/log\/apache2\/access.log<\/code> (veya <code>example.com_access.log<\/code> gibi \u00f6zel log dosyalar\u0131n\u0131z)<br \/>\n    *   Hata Loglar\u0131: <code>\/var\/log\/apache2\/error.log<\/code> (veya <code>example.com_error.log<\/code> gibi \u00f6zel log dosyalar\u0131n\u0131z)<br \/>\n    Apache loglar\u0131, Nginx&#8217;ten gelen isteklerin Apache taraf\u0131ndan nas\u0131l i\u015flendi\u011fini ve PHP veya di\u011fer dinamik i\u00e7eriklerle ilgili hatalar\u0131 g\u00f6sterir.<\/p>\n<p>*   <strong>Servis Durumlar\u0131:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo service nginx status\n    sudo service apache2 status<\/code><\/pre>\n<p>    Bu komutlar, her iki servisin de \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 kontrol etmenizi sa\u011flar.<\/p>\n<p>*   <strong>Yap\u0131land\u0131rma Kontrolleri:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo nginx -t          # Nginx yap\u0131land\u0131rma s\u00f6zdizimini kontrol eder\n    sudo apache2ctl configtest # Apache yap\u0131land\u0131rma s\u00f6zdizimini kontrol eder<\/code><\/pre>\n<p>    Bu komutlar, yanl\u0131\u015f yaz\u0131lm\u0131\u015f bir direktif veya s\u00f6zdizimi hatas\u0131 olup olmad\u0131\u011f\u0131n\u0131 h\u0131zl\u0131ca tespit etmenize yard\u0131mc\u0131 olur.<\/p>\n<p>*   <strong>Port Dinleme Kontrol\u00fc:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo netstat -tulnp | grep LISTEN<\/code><\/pre>\n<p>    Bu komut, hangi portlar\u0131n hangi servisler taraf\u0131ndan dinlendi\u011fini g\u00f6sterir. Nginx&#8217;in 80 ve 443&#8217;\u00fc, Apache&#8217;nin ise 8080&#8217;i dinledi\u011finden emin olun.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu kapsaml\u0131 rehberde, Ubuntu 14.04 \u00fczerinde Nginx&#8217;i hem statik i\u00e7erik sunucusu hem de Apache i\u00e7in bir ters proxy olarak nas\u0131l yap\u0131land\u0131raca\u011f\u0131m\u0131z\u0131 ad\u0131m ad\u0131m \u00f6\u011frendik. Bu yap\u0131land\u0131rma, web sitenizin performans\u0131n\u0131 art\u0131rman\u0131n, sunucu kaynaklar\u0131n\u0131 daha verimli kullanman\u0131n ve genel olarak daha sa\u011flam ve \u00f6l\u00e7eklenebilir bir web mimarisi olu\u015fturman\u0131n etkili bir yoludur. Nginx&#8217;in h\u0131zl\u0131 statik dosya sunumu ve geli\u015fmi\u015f \u00f6nbellekleme yetenekleri ile Apache&#8217;nin g\u00fc\u00e7l\u00fc dinamik i\u00e7erik i\u015fleme kabiliyetlerini birle\u015ftirerek, ziyaret\u00e7ilerinize daha h\u0131zl\u0131 ve daha g\u00fcvenilir bir deneyim sunabilirsiniz.<\/p>\n<p>Unutulmamal\u0131d\u0131r ki, Ubuntu 14.04 eski bir i\u015fletim sistemi s\u00fcr\u00fcm\u00fcd\u00fcr ve g\u00fcvenlik g\u00fcncellemeleri almamaktad\u0131r. \u00dcretim ortamlar\u0131nda daha g\u00fcncel ve desteklenen bir Ubuntu s\u00fcr\u00fcm\u00fc kullanman\u0131z \u015fiddetle tavsiye edilir. Ancak burada a\u00e7\u0131klanan prensipler, modern Linux da\u011f\u0131t\u0131mlar\u0131nda da Nginx ve Apache&#8217;yi bir araya getirmek i\u00e7in ge\u00e7erlili\u011fini korumaktad\u0131r. Bu yap\u0131land\u0131rmay\u0131 temel alarak, kendi \u00f6zel ihtiya\u00e7lar\u0131n\u0131za g\u00f6re daha karma\u015f\u0131k ve optimize edilmi\u015f \u00e7\u00f6z\u00fcmler geli\u015ftirebilirsiniz.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Nginx&#8217;i Ubuntu 14.04 \u00dczerinde Apache i\u00e7in Bir Web Sunucusu ve Ters Proxy Olarak Yap\u0131land\u0131rma\nWeb sunucusu mimarileri, performans ve \u00f6l\u00e7eklenebi","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1468],"tags":[],"class_list":{"0":"post-36399","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Nginx&#039;i Ubuntu 14.04 \u00dczerinde Apache i\u00e7in Bir Web Sunucusu ve Ters Proxy Olarak Yap\u0131land\u0131rma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/nginxi-ubuntu-14-04-uzerinde-apache-icin-bir-web-sunucusu-ve-ters-proxy-olarak-yapilandirma\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Nginx&#039;i Ubuntu 14.04 \u00dczerinde Apache i\u00e7in Bir Web Sunucusu ve Ters Proxy Olarak Yap\u0131land\u0131rma\" \/>\n<meta property=\"og:description\" content=\"Nginx&#039;i Ubuntu 14.04 \u00dczerinde Apache i\u00e7in Bir Web Sunucusu ve Ters Proxy Olarak Yap\u0131land\u0131rma Web sunucusu mimarileri, performans ve \u00f6l\u00e7eklenebi\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/nginxi-ubuntu-14-04-uzerinde-apache-icin-bir-web-sunucusu-ve-ters-proxy-olarak-yapilandirma\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-15T16:41:02+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"21 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginxi-ubuntu-14-04-uzerinde-apache-icin-bir-web-sunucusu-ve-ters-proxy-olarak-yapilandirma\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginxi-ubuntu-14-04-uzerinde-apache-icin-bir-web-sunucusu-ve-ters-proxy-olarak-yapilandirma\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Nginx&#8217;i Ubuntu 14.04 \u00dczerinde Apache i\u00e7in Bir Web Sunucusu ve Ters Proxy Olarak Yap\u0131land\u0131rma\",\"datePublished\":\"2025-12-15T16:41:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginxi-ubuntu-14-04-uzerinde-apache-icin-bir-web-sunucusu-ve-ters-proxy-olarak-yapilandirma\/\"},\"wordCount\":2778,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/nginxi-ubuntu-14-04-uzerinde-apache-icin-bir-web-sunucusu-ve-ters-proxy-olarak-yapilandirma\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginxi-ubuntu-14-04-uzerinde-apache-icin-bir-web-sunucusu-ve-ters-proxy-olarak-yapilandirma\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/nginxi-ubuntu-14-04-uzerinde-apache-icin-bir-web-sunucusu-ve-ters-proxy-olarak-yapilandirma\/\",\"name\":\"Nginx'i Ubuntu 14.04 \u00dczerinde Apache i\u00e7in Bir Web Sunucusu ve Ters Proxy Olarak Yap\u0131land\u0131rma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-15T16:41:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginxi-ubuntu-14-04-uzerinde-apache-icin-bir-web-sunucusu-ve-ters-proxy-olarak-yapilandirma\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/nginxi-ubuntu-14-04-uzerinde-apache-icin-bir-web-sunucusu-ve-ters-proxy-olarak-yapilandirma\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginxi-ubuntu-14-04-uzerinde-apache-icin-bir-web-sunucusu-ve-ters-proxy-olarak-yapilandirma\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Nginx&#8217;i Ubuntu 14.04 \u00dczerinde Apache i\u00e7in Bir Web Sunucusu ve Ters Proxy Olarak Yap\u0131land\u0131rma\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Nginx'i Ubuntu 14.04 \u00dczerinde Apache i\u00e7in Bir Web Sunucusu ve Ters Proxy Olarak Yap\u0131land\u0131rma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/nginxi-ubuntu-14-04-uzerinde-apache-icin-bir-web-sunucusu-ve-ters-proxy-olarak-yapilandirma\/","og_locale":"tr_TR","og_type":"article","og_title":"Nginx'i Ubuntu 14.04 \u00dczerinde Apache i\u00e7in Bir Web Sunucusu ve Ters Proxy Olarak Yap\u0131land\u0131rma","og_description":"Nginx'i Ubuntu 14.04 \u00dczerinde Apache i\u00e7in Bir Web Sunucusu ve Ters Proxy Olarak Yap\u0131land\u0131rma Web sunucusu mimarileri, performans ve \u00f6l\u00e7eklenebi","og_url":"https:\/\/fatihsoysal.com\/blog\/nginxi-ubuntu-14-04-uzerinde-apache-icin-bir-web-sunucusu-ve-ters-proxy-olarak-yapilandirma\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-15T16:41:02+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"21 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/nginxi-ubuntu-14-04-uzerinde-apache-icin-bir-web-sunucusu-ve-ters-proxy-olarak-yapilandirma\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/nginxi-ubuntu-14-04-uzerinde-apache-icin-bir-web-sunucusu-ve-ters-proxy-olarak-yapilandirma\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Nginx&#8217;i Ubuntu 14.04 \u00dczerinde Apache i\u00e7in Bir Web Sunucusu ve Ters Proxy Olarak Yap\u0131land\u0131rma","datePublished":"2025-12-15T16:41:02+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/nginxi-ubuntu-14-04-uzerinde-apache-icin-bir-web-sunucusu-ve-ters-proxy-olarak-yapilandirma\/"},"wordCount":2778,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/nginxi-ubuntu-14-04-uzerinde-apache-icin-bir-web-sunucusu-ve-ters-proxy-olarak-yapilandirma\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/nginxi-ubuntu-14-04-uzerinde-apache-icin-bir-web-sunucusu-ve-ters-proxy-olarak-yapilandirma\/","url":"https:\/\/fatihsoysal.com\/blog\/nginxi-ubuntu-14-04-uzerinde-apache-icin-bir-web-sunucusu-ve-ters-proxy-olarak-yapilandirma\/","name":"Nginx'i Ubuntu 14.04 \u00dczerinde Apache i\u00e7in Bir Web Sunucusu ve Ters Proxy Olarak Yap\u0131land\u0131rma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-15T16:41:02+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/nginxi-ubuntu-14-04-uzerinde-apache-icin-bir-web-sunucusu-ve-ters-proxy-olarak-yapilandirma\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/nginxi-ubuntu-14-04-uzerinde-apache-icin-bir-web-sunucusu-ve-ters-proxy-olarak-yapilandirma\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/nginxi-ubuntu-14-04-uzerinde-apache-icin-bir-web-sunucusu-ve-ters-proxy-olarak-yapilandirma\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Nginx&#8217;i Ubuntu 14.04 \u00dczerinde Apache i\u00e7in Bir Web Sunucusu ve Ters Proxy Olarak Yap\u0131land\u0131rma"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36399","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=36399"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36399\/revisions"}],"predecessor-version":[{"id":36400,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36399\/revisions\/36400"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=36399"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=36399"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=36399"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}