{"id":37332,"date":"2025-12-31T08:40:52","date_gmt":"2025-12-31T05:40:52","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=37332"},"modified":"2025-12-31T08:40:52","modified_gmt":"2025-12-31T05:40:52","slug":"nginx-ve-jwplayer-ile-centos-6-uzerinde-video-akisi-nasil-yapilir","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/nginx-ve-jwplayer-ile-centos-6-uzerinde-video-akisi-nasil-yapilir\/","title":{"rendered":"Nginx ve JWPlayer ile CentOS 6 \u00dczerinde Video Ak\u0131\u015f\u0131 Nas\u0131l Yap\u0131l\u0131r?"},"content":{"rendered":"<h2>Nginx ve JWPlayer ile CentOS 6 \u00dczerinde Video Ak\u0131\u015f\u0131 Nas\u0131l Yap\u0131l\u0131r?<\/h2>\n<p><body><\/p>\n<h3>Giri\u015f<\/h3>\n<p>G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda video i\u00e7erikleri, web sitelerinin ve uygulamalar\u0131n vazge\u00e7ilmez bir par\u00e7as\u0131 haline gelmi\u015ftir. E\u011fitimden e\u011flenceye, pazarlamadan ileti\u015fime kadar bir\u00e7ok alanda video ak\u0131\u015f\u0131 (video streaming) \u00e7\u00f6z\u00fcmlerine ihtiya\u00e7 duyulmaktad\u0131r. Bu makalede, a\u00e7\u0131k kaynak kodlu ve y\u00fcksek performansl\u0131 bir web sunucusu olan Nginx ile g\u00fc\u00e7l\u00fc ve esnek bir medya oynat\u0131c\u0131s\u0131 olan JWPlayer&#8217;\u0131 kullanarak CentOS 6 i\u015fletim sistemi \u00fczerinde nas\u0131l video ak\u0131\u015f\u0131 yapabilece\u011finizi ad\u0131m ad\u0131m ele alaca\u011f\u0131z. CentOS 6, kararl\u0131l\u0131\u011f\u0131 ve uzun s\u00fcreli deste\u011fi ile bilinen bir sunucu i\u015fletim sistemidir ve bu rehber, \u00f6zellikle eski nesil sunucular \u00fczerinde \u00e7al\u0131\u015fanlar i\u00e7in pratik bir \u00e7\u00f6z\u00fcm sunmaktad\u0131r.<\/p>\n<p>Nginx, statik i\u00e7erik sunumu ve ters proxy yetenekleri sayesinde video ak\u0131\u015f\u0131 i\u00e7in ideal bir platformdur. \u00d6zellikle b\u00fcy\u00fck dosya boyutlar\u0131na sahip videolar\u0131n istemcilere sorunsuz bir \u015fekilde ula\u015ft\u0131r\u0131lmas\u0131nda Nginx&#8217;in performans\u0131 \u00f6ne \u00e7\u0131kar. JWPlayer ise, \u00e7e\u015fitli cihazlarda ve taray\u0131c\u0131larda uyumlu bir \u015fekilde \u00e7al\u0131\u015fabilen, \u00f6zelle\u015ftirilebilir bir HTML5 video oynat\u0131c\u0131s\u0131d\u0131r. Nginx&#8217;in dosya sunma g\u00fcc\u00fc ile JWPlayer&#8217;\u0131n oynatma yetene\u011fini bir araya getirerek, kullan\u0131c\u0131lar\u0131n\u0131za y\u00fcksek kaliteli ve kesintisiz bir video izleme deneyimi sunabilirsiniz. Bu kurulum, \u00f6zellikle MP4 format\u0131ndaki videolar i\u00e7in &#8220;pseudo-streaming&#8221; olarak bilinen bir y\u00f6ntemle \u00e7al\u0131\u015f\u0131r. Pseudo-streaming, bir videonun tamam\u0131n\u0131n indirilmesini beklemeden oynat\u0131lmas\u0131na olanak tan\u0131r ve kullan\u0131c\u0131n\u0131n videonun belirli bir noktas\u0131na atlamas\u0131n\u0131 (seek) destekler.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<p>Bu rehbere ba\u015flamadan \u00f6nce a\u015fa\u011f\u0131daki \u00f6n gereksinimlerin kar\u015f\u0131land\u0131\u011f\u0131ndan emin olunuz:<\/p>\n<p>*   <strong>CentOS 6 \u0130\u015fletim Sistemi:<\/strong> Sunucunuzda CentOS 6 kurulu ve g\u00fcncel olmal\u0131d\u0131r.<br \/>\n*   <strong>Root veya Sudo Yetkileri:<\/strong> Kurulum ve yap\u0131land\u0131rma ad\u0131mlar\u0131 i\u00e7in root kullan\u0131c\u0131s\u0131 veya sudo yetkilerine sahip bir kullan\u0131c\u0131ya ihtiyac\u0131n\u0131z olacakt\u0131r.<br \/>\n*   <strong>Temel Linux Komut Bilgisi:<\/strong> SSH arac\u0131l\u0131\u011f\u0131yla sunucuya ba\u011flanma, dosya sistemi navigasyonu ve temel komut sat\u0131r\u0131 i\u015flemleri hakk\u0131nda bilgi sahibi olman\u0131z beklenir.<br \/>\n*   <strong>Nginx:<\/strong> Hen\u00fcz kurulu de\u011filse, bu rehberde Nginx&#8217;i kurma ad\u0131mlar\u0131n\u0131 da ele alaca\u011f\u0131z.<br \/>\n*   <strong>JWPlayer:<\/strong> JWPlayer&#8217;\u0131n kendi web sitesinden indirilebilen veya CDN \u00fczerinden eri\u015filebilen JavaScript ve CSS dosyalar\u0131. Genellikle kendi sunucunuzda bar\u0131nd\u0131raca\u011f\u0131m\u0131z &#8220;self-hosted&#8221; versiyonu tercih edece\u011fiz.<br \/>\n*   <strong>Video Dosyalar\u0131:<\/strong> Ak\u0131\u015f\u0131n\u0131 yapmak istedi\u011finiz, tercihen MP4 (H.264 video kode\u011fi ve AAC ses kode\u011fi ile) format\u0131nda video dosyalar\u0131.<br \/>\n*   <strong>Alan Ad\u0131 veya IP Adresi:<\/strong> Sunucunuzun bir alan ad\u0131 veya do\u011frudan IP adresi \u00fczerinden eri\u015filebilir olmas\u0131 gerekmektedir.<\/p>\n<h3>CentOS 6 \u00dczerine Nginx Kurulumu ve Temel Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>CentOS 6 varsay\u0131lan depolar\u0131nda Nginx&#8217;in eski bir s\u00fcr\u00fcm\u00fc bulunabilir. En g\u00fcncel ve stabil s\u00fcr\u00fcm\u00fc almak i\u00e7in Nginx&#8217;in kendi deposunu eklememiz gerekmektedir.<\/p>\n<h4>Nginx Deposu Ekleme<\/h4>\n<p>\u00d6ncelikle, Nginx&#8217;in resmi deposunu sistemimize eklemek i\u00e7in <code>yum<\/code> paket y\u00f6neticisi ile kullanaca\u011f\u0131m\u0131z <code>.repo<\/code> dosyas\u0131n\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/yum.repos.d\/nginx.repo<\/code><\/pre>\n<p>A\u00e7\u0131lan dosyaya a\u015fa\u011f\u0131daki i\u00e7eri\u011fi ekleyin:<\/p>\n<pre><code class=\"language-ini\">[nginx]\nname=nginx repo\nbaseurl=http:\/\/nginx.org\/packages\/centos\/6\/$basearch\/\ngpgcheck=0\nenabled=1<\/code><\/pre>\n<p>Kaydedip kapat\u0131n (Ctrl+X, Y, Enter).<\/p>\n<h4>Nginx Kurulumu<\/h4>\n<p>Depoyu ekledikten sonra, Nginx&#8217;i kurmak i\u00e7in a\u015fa\u011f\u0131daki komutu kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo yum install nginx -y<\/code><\/pre>\n<p>Bu komut, Nginx paketini ve gerekli ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 kuracakt\u0131r.<\/p>\n<h4>Nginx Servisini Ba\u015flatma ve Etkinle\u015ftirme<\/h4>\n<p>Kurulum tamamland\u0131ktan sonra, Nginx servisini ba\u015flatmal\u0131 ve sistem a\u00e7\u0131l\u0131\u015f\u0131nda otomatik olarak ba\u015flamas\u0131 i\u00e7in etkinle\u015ftirmeliyiz:<\/p>\n<pre><code class=\"language-bash\">sudo service nginx start\nsudo chkconfig nginx on<\/code><\/pre>\n<p>Nginx&#8217;in ba\u015far\u0131l\u0131 bir \u015fekilde \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in sunucunuzun IP adresini veya alan ad\u0131n\u0131 bir web taray\u0131c\u0131s\u0131nda ziyaret edebilirsiniz. &#8220;Welcome to nginx!&#8221; mesaj\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<h4>G\u00fcvenlik Duvar\u0131 Ayarlar\u0131<\/h4>\n<p>CentOS 6 \u00fczerinde varsay\u0131lan g\u00fcvenlik duvar\u0131 <code>iptables<\/code>&#8216;t\u0131r. Nginx&#8217;in d\u0131\u015far\u0131dan eri\u015filebilir olmas\u0131 i\u00e7in HTTP (80) ve HTTPS (443) portlar\u0131n\u0131 a\u00e7mam\u0131z gerekmektedir.<\/p>\n<pre><code class=\"language-bash\">sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT\nsudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT\nsudo service iptables save\nsudo service iptables restart<\/code><\/pre>\n<p>Bu komutlar, 80 ve 443 numaral\u0131 portlara gelen ba\u011flant\u0131lara izin verir, <code>iptables<\/code> kurallar\u0131n\u0131 kaydeder ve g\u00fcvenlik duvar\u0131n\u0131 yeniden ba\u015flat\u0131r.<\/p>\n<h3>Nginx ile Video Ak\u0131\u015f\u0131 \u0130\u00e7in Yap\u0131land\u0131rma<\/h3>\n<p>Nginx, MP4 pseudo-streaming i\u00e7in dahili bir mod\u00fcle sahiptir. Bu mod\u00fcl, istemcinin videoyu belirli bir bayt ofsetinden istemesine olanak tan\u0131r ve Nginx, videonun o k\u0131sm\u0131ndan itibaren veri ak\u0131\u015f\u0131n\u0131 ba\u015flat\u0131r. Bu sayede kullan\u0131c\u0131, videonun tamam\u0131n\u0131 indirmeden ileri veya geri sarma yapabilir.<\/p>\n<h4>MP4 Pseudo-Streaming Mod\u00fcl\u00fc<\/h4>\n<p>Nginx&#8217;in <code>ngx_http_mp4_module<\/code> mod\u00fcl\u00fc, MP4 dosyalar\u0131 i\u00e7in pseudo-streaming deste\u011fi sa\u011flar. Bu mod\u00fcl genellikle Nginx ile birlikte gelir ve ek bir kurulum gerektirmez. Yapmam\u0131z gereken tek \u015fey, Nginx yap\u0131land\u0131rmas\u0131nda bu mod\u00fcl\u00fc do\u011fru \u015fekilde kullanmakt\u0131r.<\/p>\n<h4>Nginx Sanal Sunucu Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Video dosyalar\u0131m\u0131z\u0131 sunmak i\u00e7in Nginx&#8217;in ana yap\u0131land\u0131rma dosyas\u0131na veya ayr\u0131 bir sanal sunucu (server block) dosyas\u0131na belirli ayarlar\u0131 eklememiz gerekmektedir. Genellikle <code>\/etc\/nginx\/conf.d\/<\/code> dizini alt\u0131nda ayr\u0131 bir <code>.conf<\/code> dosyas\u0131 olu\u015fturmak daha d\u00fczenli bir yakla\u015f\u0131md\u0131r.<\/p>\n<p>\u00d6rne\u011fin, <code>video.conf<\/code> ad\u0131nda bir dosya olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/nginx\/conf.d\/video.conf<\/code><\/pre>\n<p>Bu dosyaya a\u015fa\u011f\u0131daki i\u00e7eri\u011fi ekleyin. Bu yap\u0131land\u0131rma, <code>videos<\/code> alt\u0131ndaki t\u00fcm MP4 dosyalar\u0131 i\u00e7in pseudo-streaming&#8217;i etkinle\u015ftirir ve JWPlayer dosyalar\u0131 i\u00e7in de bir konum tan\u0131mlar.<\/p>\n<pre><code class=\"language-nginx\">server {\n    listen 80;\n    server_name your_domain.com www.your_domain.com; # Kendi alan ad\u0131n\u0131z\u0131 buraya yaz\u0131n\n\n    root \/usr\/share\/nginx\/html; # Web k\u00f6k dizininiz, JWPlayer dosyalar\u0131 burada olacak\n\n    index index.html index.htm;\n\n    # Video dosyalar\u0131 i\u00e7in konum\n    location \/videos\/ {\n        # Video dosyalar\u0131n\u0131n ger\u00e7ek yolu\n        # \u00d6rne\u011fin, \/var\/www\/html\/videos dizininde videolar\u0131n\u0131z varsa:\n        # alias \/var\/www\/html\/videos\/;\n        # E\u011fer root dizini alt\u0131nda 'videos' klas\u00f6r\u00fcn\u00fcz varsa, alias'a gerek yok.\n        # Bu \u00f6rnekte root dizini alt\u0131nda 'videos' klas\u00f6r\u00fc oldu\u011funu varsay\u0131yoruz.\n\n        mp4; # MP4 pseudo-streaming'i etkinle\u015ftirir\n        mp4_buffer_size 1m; # MP4 meta verilerini okumak i\u00e7in kullan\u0131lan arabellek boyutu\n        mp4_max_buffer_size 5m; # MP4 ak\u0131\u015f\u0131 i\u00e7in maksimum arabellek boyutu\n\n        # \u0130\u00e7erik t\u00fcr\u00fcn\u00fc do\u011fru ayarlay\u0131n\n        types {\n            video\/mp4 mp4;\n        }\n\n        # \u0130stemci taraf\u0131nda \u00f6nbelleklemeyi kontrol edin (iste\u011fe ba\u011fl\u0131)\n        expires 30d;\n        add_header Cache-Control \"public, must-revalidate\";\n        add_header Accept-Ranges bytes;\n    }\n\n    # JWPlayer dosyalar\u0131 i\u00e7in konum (e\u011fer ayr\u0131 bir dizinde tutuluyorsa)\n    location \/jwplayer\/ {\n        alias \/usr\/share\/nginx\/html\/jwplayer\/; # JWPlayer dosyalar\u0131n\u0131n ger\u00e7ek yolu\n        expires 30d;\n        add_header Cache-Control \"public, must-revalidate\";\n    }\n\n    # Di\u011fer statik dosyalar i\u00e7in (HTML, CSS, JS vb.)\n    location \/ {\n        try_files $uri $uri\/ =404;\n    }\n\n    # Hata sayfalar\u0131 (iste\u011fe ba\u011fl\u0131)\n    error_page 404 \/404.html;\n    location = \/404.html {\n        internal;\n    }\n\n    error_page 500 502 503 504 \/50x.html;\n    location = \/50x.html {\n        internal;\n    }\n}<\/code><\/pre>\n<p>Yukar\u0131daki yap\u0131land\u0131rmay\u0131 kendi ihtiya\u00e7lar\u0131n\u0131za g\u00f6re d\u00fczenlemeyi unutmay\u0131n:<br \/>\n*   <code>server_name<\/code>: Kendi alan ad\u0131n\u0131z\u0131 yaz\u0131n.<br \/>\n*   <code>root<\/code>: Web sitenizin ana dizinini belirtir. JWPlayer dosyalar\u0131 ve HTML sayfalar\u0131 burada olacakt\u0131r.<br \/>\n*   <code>location \/videos\/<\/code>: Video dosyalar\u0131n\u0131z\u0131n sunulaca\u011f\u0131 URL yoludur. Varsay\u0131lan olarak, <code>root<\/code> dizini alt\u0131ndaki <code>videos<\/code> klas\u00f6r\u00fcne i\u015faret eder. E\u011fer videolar\u0131n\u0131z farkl\u0131 bir konumdaysa, <code>alias<\/code> y\u00f6nergesini kullanarak do\u011fru yolu belirtmelisiniz (\u00f6rne\u011fin, <code>alias \/mnt\/videos\/;<\/code>).<br \/>\n*   <code>location \/jwplayer\/<\/code>: JWPlayer dosyalar\u0131n\u0131n sunulaca\u011f\u0131 URL yoludur. <code>alias<\/code> y\u00f6nergesi ile JWPlayer dosyalar\u0131n\u0131n sunucudaki ger\u00e7ek yolunu belirtin.<\/p>\n<p>Yap\u0131land\u0131rma dosyas\u0131n\u0131 kaydettikten sonra, Nginx yap\u0131land\u0131rmas\u0131n\u0131n s\u00f6zdizimini kontrol edin ve servisi yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo nginx -t\nsudo service nginx restart<\/code><\/pre>\n<p>E\u011fer <code>nginx -t<\/code> komutu herhangi bir hata g\u00f6stermezse, yap\u0131land\u0131rman\u0131z do\u011fru demektir.<\/p>\n<h4>MIME Tipleri ve Video Dosyalar\u0131 \u0130\u00e7in Konfig\u00fcrasyon<\/h4>\n<p>Nginx&#8217;in video dosyalar\u0131n\u0131 do\u011fru MIME tipi ile sunmas\u0131 \u00f6nemlidir. Genellikle <code>\/etc\/nginx\/mime.types<\/code> dosyas\u0131nda bu tan\u0131mlar bulunur. MP4 i\u00e7in <code>video\/mp4<\/code> ve FLV i\u00e7in <code>video\/x-flv<\/code> tan\u0131mlar\u0131n\u0131n oldu\u011fundan emin olun. E\u011fer eksikse, ilgili sat\u0131rlar\u0131 eklemeniz gerekebilir:<\/p>\n<pre><code class=\"language-nginx\">types {\n    # ... di\u011fer tipler ...\n    video\/mp4                               mp4;\n    video\/x-flv                             flv;\n    # ...\n}<\/code><\/pre>\n<p>\u00d6nceki <code>location \/videos\/<\/code> blo\u011funda zaten <code>types { video\/mp4 mp4; }<\/code> tan\u0131mlamas\u0131n\u0131 yapm\u0131\u015ft\u0131k, bu da bu konum i\u00e7in \u00f6zel olarak bu MIME tipini ayarlayacakt\u0131r. Genel <code>mime.types<\/code> dosyas\u0131n\u0131n da do\u011fru olmas\u0131 iyi bir uygulamad\u0131r.<\/p>\n<h3>Video Dosyalar\u0131n\u0131 Haz\u0131rlama ve Sunucuya Y\u00fckleme<\/h3>\n<p>Video ak\u0131\u015f\u0131n\u0131n sorunsuz olmas\u0131 i\u00e7in video dosyalar\u0131n\u0131n do\u011fru formatta ve optimize edilmi\u015f olmas\u0131 \u00f6nemlidir.<\/p>\n<h4>Video Format\u0131 ve Kodlama \u00d6nerileri<\/h4>\n<p>*   <strong>Format:<\/strong> MP4, \u00e7o\u011fu cihaz ve taray\u0131c\u0131 taraf\u0131ndan desteklenen en yayg\u0131n ve uyumlu formatt\u0131r.<br \/>\n*   <strong>Video Kode\u011fi:<\/strong> H.264 (AVC) veya daha modern H.265 (HEVC) tercih edilebilir. H.264, daha geni\u015f uyumluluk sa\u011flar.<br \/>\n*   <strong>Ses Kode\u011fi:<\/strong> AAC, MP4 ile uyumlu ve yayg\u0131n olarak kullan\u0131lan bir ses kode\u011fidir.<br \/>\n*   <strong>Faststart\/MOOV Atom:<\/strong> MP4 dosyalar\u0131nda, videonun meta verilerini (MOOV atomu) dosyan\u0131n ba\u015f\u0131nda bulundurmak \u00e7ok \u00f6nemlidir. Bu, oynat\u0131c\u0131n\u0131n videoyu indirmeye ba\u015flamadan \u00f6nce dosya hakk\u0131nda bilgi edinmesini sa\u011flar ve pseudo-streaming i\u00e7in gereklidir. \u00c7o\u011fu video d\u00fczenleme veya d\u00f6n\u00fc\u015ft\u00fcrme yaz\u0131l\u0131m\u0131 (FFmpeg gibi) bu se\u00e7ene\u011fi sunar. FFmpeg kullan\u0131yorsan\u0131z, <code>movflags +faststart<\/code> se\u00e7ene\u011fini eklemeyi unutmay\u0131n:<\/p>\n<pre><code class=\"language-bash\">ffmpeg -i input.mp4 -movflags faststart -acodec copy -vcodec copy output.mp4<\/code><\/pre>\n<p>    Bu komut, videoyu yeniden kodlamadan sadece meta verilerini dosyan\u0131n ba\u015f\u0131na ta\u015f\u0131r, bu da h\u0131zl\u0131 ve kay\u0131ps\u0131z bir i\u015flemdir.<\/p>\n<h4>Video Dosyalar\u0131n\u0131 Sunucuya Yerle\u015ftirme<\/h4>\n<p>Video dosyalar\u0131n\u0131z\u0131 Nginx yap\u0131land\u0131rman\u0131zda belirtti\u011finiz dizine y\u00fcklemeniz gerekmektedir. \u00d6rne\u011fimizde, <code>root \/usr\/share\/nginx\/html;<\/code> tan\u0131mlad\u0131\u011f\u0131m\u0131z i\u00e7in videolar\u0131m\u0131z\u0131 <code>\/usr\/share\/nginx\/html\/videos\/<\/code> dizinine yerle\u015ftirmeliyiz.<\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/usr\/share\/nginx\/html\/videos<\/code><\/pre>\n<p>\u015eimdi video dosyalar\u0131n\u0131z\u0131 (\u00f6rne\u011fin, <code>sample_video.mp4<\/code>) bu dizine FTP (FileZilla), SCP veya rsync gibi ara\u00e7larla y\u00fckleyebilirsiniz.<\/p>\n<pre><code class=\"language-bash\"># \u00d6rnek SCP komutu (yerel bilgisayar\u0131n\u0131zdan sunucuya)\nscp \/path\/to\/local\/sample_video.mp4 user@your_server_ip:\/usr\/share\/nginx\/html\/videos\/<\/code><\/pre>\n<p>Dosyalar\u0131n Nginx taraf\u0131ndan okunabilir oldu\u011fundan emin olmak i\u00e7in do\u011fru izinleri ayarlay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo chown -R nginx:nginx \/usr\/share\/nginx\/html\/videos\nsudo chmod -R 755 \/usr\/share\/nginx\/html\/videos<\/code><\/pre>\n<h3>JWPlayer Entegrasyonu<\/h3>\n<p>JWPlayer, web sayfalar\u0131n\u0131za kolayca video oynat\u0131c\u0131lar\u0131 eklemenizi sa\u011flayan g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r.<\/p>\n<h4>JWPlayer&#8217;\u0131 Edinme ve Sunucuya Y\u00fckleme<\/h4>\n<p>JWPlayer&#8217;\u0131 edinmenin iki ana yolu vard\u0131r:<br \/>\n1.  <strong>JWPlayer Web Sitesinden \u0130ndirme (Self-Hosted):<\/strong> JWPlayer&#8217;\u0131n resmi web sitesinden (jwplayer.com) bir hesap olu\u015fturarak veya \u00fccretsiz deneme s\u00fcr\u00fcm\u00fcn\u00fc kullanarak gerekli dosyalar\u0131 indirebilirsiniz. \u0130ndirdi\u011finiz pakette genellikle <code>jwplayer.js<\/code>, <code>jwplayer.flash.swf<\/code>, <code>jwplayer.html5.js<\/code> ve \u00e7e\u015fitli skin dosyalar\u0131 bulunur. Bu dosyalar\u0131 kendi sunucunuzda bar\u0131nd\u0131racaks\u0131n\u0131z.<br \/>\n2.  <strong>CDN Kullan\u0131m\u0131:<\/strong> JWPlayer, kendi CDN&#8217;i \u00fczerinden de dosyalar\u0131n\u0131 sunar. Bu durumda dosyalar\u0131 sunucunuza y\u00fcklemenize gerek kalmaz, sadece HTML sayfan\u0131zda CDN ba\u011flant\u0131lar\u0131n\u0131 kullan\u0131rs\u0131n\u0131z. Ancak bu makale self-hosted bir \u00e7\u00f6z\u00fcm \u00fczerine odakland\u0131\u011f\u0131 i\u00e7in, ilk y\u00f6ntemi tercih edece\u011fiz.<\/p>\n<p>\u0130ndirdi\u011finiz JWPlayer dosyalar\u0131n\u0131 sunucunuzda, Nginx yap\u0131land\u0131rman\u0131zda belirtti\u011finiz yola (\u00f6rne\u011fimizde <code>\/usr\/share\/nginx\/html\/jwplayer\/<\/code>) yerle\u015ftirin.<\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/usr\/share\/nginx\/html\/jwplayer\n<h2>\u0130ndirdi\u011finiz JWPlayer dosyalar\u0131n\u0131 buraya y\u00fckleyin<\/h2>\n<h2>\u00d6rne\u011fin, jwplayer-8.x.x.zip dosyas\u0131n\u0131 a\u00e7\u0131p i\u00e7eri\u011fini buraya kopyalay\u0131n<\/code><\/pre>\n<\/h2>\n<p>Yine, dosya izinlerini ayarlay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo chown -R nginx:nginx \/usr\/share\/nginx\/html\/jwplayer\nsudo chmod -R 755 \/usr\/share\/nginx\/html\/jwplayer<\/code><\/pre>\n<h4>HTML Sayfas\u0131 Olu\u015fturma ve JWPlayer&#8217;\u0131 G\u00f6mme<\/h4>\n<p>JWPlayer&#8217;\u0131 kullanmak i\u00e7in basit bir HTML sayfas\u0131 olu\u015fturman\u0131z gerekmektedir. Bu sayfay\u0131 Nginx&#8217;in <code>root<\/code> dizinine (\u00f6rne\u011fimizde <code>\/usr\/share\/nginx\/html\/<\/code>) yerle\u015ftirelim.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/usr\/share\/nginx\/html\/video_player.html<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki HTML i\u00e7eri\u011fini dosyaya yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-html\"><!DOCTYPE html>\n<html>\n<head>\n    <title>JWPlayer Video Ak\u0131\u015f\u0131<\/title>\n    <meta charset=\"utf-8\">\n    <script type=\"text\/javascript\" src=\"\/jwplayer\/jwplayer.js\"><\/script>\n    <!-- JWPlayer lisans anahtar\u0131n\u0131z\u0131 buraya ekleyin (iste\u011fe ba\u011fl\u0131 ama tavsiye edilir) -->\n    <!-- <script type=\"text\/javascript\">jwplayer.key=\"YOUR_JWPLAYER_LICENSE_KEY\";<\/script> -->\n<\/head>\n<body>\n\n    \n\n    <div id=\"my-video-player\">Y\u00fckleniyor...<\/div>\n\n    <script type=\"text\/javascript\">\n        jwplayer(\"my-video-player\").setup({\n            file: \"\/videos\/sample_video.mp4\", \/\/ Video dosyan\u0131z\u0131n URL'si\n            image: \"\/images\/poster.jpg\",      \/\/ Videonun ba\u015flamadan \u00f6nceki \u00f6nizleme resmi (iste\u011fe ba\u011fl\u0131)\n            width: \"640\",                     \/\/ Oynat\u0131c\u0131n\u0131n geni\u015fli\u011fi\n            height: \"360\",                    \/\/ Oynat\u0131c\u0131n\u0131n y\u00fcksekli\u011fi\n            autostart: false,                 \/\/ Sayfa y\u00fcklendi\u011finde videonun otomatik ba\u015flamas\u0131\n            controls: true,                   \/\/ Oynat\u0131c\u0131 kontrollerini g\u00f6ster\n            primary: \"html5\",                 \/\/ \u00d6nce HTML5 oynat\u0131c\u0131y\u0131 kullan, sonra Flash'a d\u00fc\u015f\n            stretching: \"uniform\",            \/\/ Videonun oynat\u0131c\u0131ya nas\u0131l s\u0131\u011fd\u0131r\u0131laca\u011f\u0131\n            repeat: false,                    \/\/ Video bitti\u011finde tekrar oynat\n            mute: false                       \/\/ Ba\u015flang\u0131\u00e7ta sesi kapat\n        });\n    <\/script>\n\n    <p>Bu sayfa Nginx \u00fczerinden JWPlayer ile video ak\u0131\u015f\u0131n\u0131 g\u00f6stermektedir.<\/p>\n\n<\/body>\n<\/html><\/code><\/pre>\n<p><strong>\u00d6nemli Notlar:<\/strong><br \/>\n*   <code>src=\"\/jwplayer\/jwplayer.js\"<\/code>: JWPlayer JavaScript dosyas\u0131n\u0131n do\u011fru yolunu belirtti\u011finizden emin olun.<br \/>\n*   <code>file: \"\/videos\/sample_video.mp4\"<\/code>: Video dosyan\u0131z\u0131n Nginx \u00fczerinden eri\u015filebilir URL&#8217;sini buraya yaz\u0131n.<br \/>\n*   <code>image: \"\/images\/poster.jpg\"<\/code>: E\u011fer bir \u00f6nizleme resmi kullanmak isterseniz, bu resmi <code>\/usr\/share\/nginx\/html\/images\/<\/code> dizinine koyup yolunu burada belirtmelisiniz. (\u00d6ncelikle <code>\/usr\/share\/nginx\/html\/images<\/code> dizinini olu\u015fturman\u0131z gerekebilir.)<br \/>\n*   <code>jwplayer.key=\"YOUR_JWPLAYER_LICENSE_KEY\";<\/code>: E\u011fer bir JWPlayer lisans\u0131n\u0131z varsa, anahtar\u0131n\u0131z\u0131 buraya ekleyerek oynat\u0131c\u0131n\u0131n t\u00fcm \u00f6zelliklerini kullanabilirsiniz. Lisans anahtar\u0131 olmadan da temel oynatma i\u015flevleri \u00e7al\u0131\u015facakt\u0131r.<\/p>\n<p>Dosyay\u0131 kaydedip kapat\u0131n.<\/p>\n<h4>JWPlayer Temel Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Yukar\u0131daki \u00f6rnekte JWPlayer&#8217;\u0131n temel yap\u0131land\u0131rma se\u00e7eneklerini kulland\u0131k. Bunlar:<\/p>\n<p>*   <strong><code>file<\/code><\/strong>: Oynat\u0131lacak video dosyas\u0131n\u0131n URL&#8217;si. Nginx \u00fczerinden eri\u015filebilen <code>\/videos\/sample_video.mp4<\/code> gibi bir yol olmal\u0131d\u0131r.<br \/>\n*   <strong><code>image<\/code><\/strong>: Video ba\u015flamadan \u00f6nce g\u00f6sterilecek poster resmi.<br \/>\n*   <strong><code>width<\/code> ve <code>height<\/code><\/strong>: Oynat\u0131c\u0131n\u0131n piksel cinsinden geni\u015fli\u011fi ve y\u00fcksekli\u011fi. Y\u00fczdelik de\u011ferler de kullan\u0131labilir (\u00f6rn. <code>\"100%\"<\/code>).<br \/>\n*   <strong><code>autostart<\/code><\/strong>: <code>true<\/code> olarak ayarlan\u0131rsa, video sayfa y\u00fcklendi\u011finde otomatik olarak oynat\u0131lmaya ba\u015flar. <code>false<\/code> ise kullan\u0131c\u0131 oynat d\u00fc\u011fmesine basana kadar bekler.<br \/>\n*   <strong><code>controls<\/code><\/strong>: <code>true<\/code> olarak ayarlan\u0131rsa, oynat\u0131c\u0131 kontrolleri (oynat\/duraklat, ses, tam ekran vb.) g\u00f6r\u00fcn\u00fcr olur.<br \/>\n*   <strong><code>primary<\/code><\/strong>: Hangi oynatma teknolojisinin \u00f6ncelikli olaca\u011f\u0131n\u0131 belirler. <code>\"html5\"<\/code> modern taray\u0131c\u0131lar i\u00e7in tercih edilirken, eski taray\u0131c\u0131lar veya belirli durumlar i\u00e7in <code>\"flash\"<\/code> bir yedek olabilir.<br \/>\n*   <strong><code>stretching<\/code><\/strong>: Videonun oynat\u0131c\u0131ya nas\u0131l s\u0131\u011fd\u0131r\u0131laca\u011f\u0131n\u0131 kontrol eder (<code>\"exactfit\"<\/code>, <code>\"fill\"<\/code>, <code>\"uniform\"<\/code>, <code>\"none\"<\/code>).<br \/>\n*   <strong><code>repeat<\/code><\/strong>: Video bitti\u011finde tekrar oynat\u0131l\u0131p oynat\u0131lmayaca\u011f\u0131n\u0131 belirler.<br \/>\n*   <strong><code>mute<\/code><\/strong>: Videonun ba\u015flang\u0131\u00e7ta sessiz olup olmayaca\u011f\u0131n\u0131 belirler.<\/p>\n<h4>JWPlayer Geli\u015fmi\u015f \u00d6zellikleri (Opsiyonel)<\/h4>\n<p>JWPlayer, zengin \u00f6zellik setine sahiptir. \u0130htiya\u00e7lar\u0131n\u0131za g\u00f6re ek \u00f6zellikler ekleyebilirsiniz:<\/p>\n<p>*   <strong>Playlist (\u00c7alma Listesi):<\/strong> Birden fazla videoyu s\u0131rayla oynatmak i\u00e7in kullan\u0131labilir.<\/p>\n<pre><code class=\"language-javascript\">jwplayer(\"my-video-player\").setup({\n        playlist: [{\n            file: \"\/videos\/video1.mp4\",\n            image: \"\/images\/poster1.jpg\",\n            title: \"Video 1 Ba\u015fl\u0131\u011f\u0131\"\n        }, {\n            file: \"\/videos\/video2.mp4\",\n            image: \"\/images\/poster2.jpg\",\n            title: \"Video 2 Ba\u015fl\u0131\u011f\u0131\"\n        }],\n        \/\/ ... di\u011fer ayarlar ...\n    });<\/code><\/pre>\n<p>*   <strong>\u00c7e\u015fitli Kaynaklar (Adaptive Streaming i\u00e7in):<\/strong> Farkl\u0131 \u00e7\u00f6z\u00fcn\u00fcrl\u00fcklerdeki videolar\u0131 sunarak bant geni\u015fli\u011fine g\u00f6re otomatik ge\u00e7i\u015f yapabilir. Ancak bu HLS\/DASH gibi daha karma\u015f\u0131k ak\u0131\u015f protokolleri gerektirir.<\/p>\n<pre><code class=\"language-javascript\">jwplayer(\"my-video-player\").setup({\n        sources: [{\n            file: \"\/videos\/video-1080p.mp4\",\n            label: \"1080p\"\n        }, {\n            file: \"\/videos\/video-720p.mp4\",\n            label: \"720p\",\n            \"default\": true\n        }, {\n            file: \"\/videos\/video-360p.mp4\",\n            label: \"360p\"\n        }],\n        \/\/ ... di\u011fer ayarlar ...\n    });<\/code><\/pre>\n<p>*   <strong>Skin (Tema):<\/strong> Oynat\u0131c\u0131n\u0131n g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc de\u011fi\u015ftirmek i\u00e7in farkl\u0131 temalar kullanabilirsiniz.<br \/>\n*   <strong>Reklam Entegrasyonu:<\/strong> VAST\/VPAID standartlar\u0131na uygun reklamlar\u0131 entegre edebilirsiniz.<br \/>\n*   <strong>Altyaz\u0131lar (Captions):<\/strong> VTT veya SRT format\u0131ndaki altyaz\u0131lar\u0131 ekleyebilirsiniz.<br \/>\n*   <strong>API Etkile\u015fimi:<\/strong> JavaScript API&#8217;si arac\u0131l\u0131\u011f\u0131yla oynat\u0131c\u0131y\u0131 programatik olarak kontrol edebilirsiniz.<\/p>\n<p>Bu geli\u015fmi\u015f \u00f6zellikler, projenizin gereksinimlerine g\u00f6re daha sonra eklenebilir. \u015eimdilik temel oynatma i\u015flevselli\u011fine odaklanmak yeterlidir.<\/p>\n<h3>Test Etme ve Sorun Giderme<\/h3>\n<p>Kurulumu tamamlad\u0131ktan sonra her \u015feyin d\u00fczg\u00fcn \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olmak i\u00e7in test etme ve olas\u0131 sorunlar\u0131 giderme ad\u0131mlar\u0131 \u00e7ok \u00f6nemlidir.<\/p>\n<h4>Taray\u0131c\u0131 \u00dczerinden Test Etme<\/h4>\n<p>Web taray\u0131c\u0131n\u0131z\u0131 a\u00e7\u0131n ve sunucunuzun IP adresini veya alan ad\u0131n\u0131 kullanarak olu\u015fturdu\u011funuz HTML sayfas\u0131na gidin:<\/p>\n<p><code>http:\/\/your_domain.com\/video_player.html<\/code> veya <code>http:\/\/your_server_ip\/video_player.html<\/code><\/p>\n<p>E\u011fer her \u015fey do\u011fru yap\u0131land\u0131r\u0131ld\u0131ysa, JWPlayer&#8217;\u0131n y\u00fcklendi\u011fini ve videonuzun oynat\u0131lmaya haz\u0131r oldu\u011funu g\u00f6rmelisiniz. Oynat d\u00fc\u011fmesine t\u0131klayarak videoyu ba\u015flat\u0131n ve ileri\/geri sarma i\u015flevselli\u011fini test edin. Video sorunsuz bir \u015fekilde oynat\u0131lmal\u0131 ve istedi\u011finiz noktaya atlayabilmelisiniz.<\/p>\n<h4>Nginx Loglar\u0131n\u0131 Kontrol Etme<\/h4>\n<p>Herhangi bir sorunla kar\u015f\u0131la\u015f\u0131rsan\u0131z, Nginx loglar\u0131 size \u00e7ok de\u011ferli bilgiler sa\u011flayacakt\u0131r.<\/p>\n<p>*   <strong>Hata Loglar\u0131:<\/strong> <code>\/var\/log\/nginx\/error.log<\/code><br \/>\n*   <strong>Eri\u015fim Loglar\u0131:<\/strong> <code>\/var\/log\/nginx\/access.log<\/code><\/p>\n<p>Bu loglar\u0131 kontrol etmek i\u00e7in a\u015fa\u011f\u0131daki komutlar\u0131 kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo tail -f \/var\/log\/nginx\/error.log\nsudo tail -f \/var\/log\/nginx\/access.log<\/code><\/pre>\n<p><code>tail -f<\/code> komutu, log dosyalar\u0131na ger\u00e7ek zamanl\u0131 olarak yeni eklenen sat\u0131rlar\u0131 g\u00f6sterir. Taray\u0131c\u0131n\u0131zda sayfay\u0131 yeniledi\u011finizde veya videoyu oynatt\u0131\u011f\u0131n\u0131zda loglarda ilgili girdileri g\u00f6rmelisiniz. \u00d6zellikle <code>error.log<\/code> dosyas\u0131nda dosya bulunamad\u0131 (404), izin hatas\u0131 (403) veya yap\u0131land\u0131rma hatas\u0131 gibi mesajlar aray\u0131n.<\/p>\n<h4>Yayg\u0131n Sorunlar ve \u00c7\u00f6z\u00fcmleri<\/h4>\n<p>*   <strong>Video Oynat\u0131lm\u0131yor veya JWPlayer Y\u00fcklenmiyor:<\/strong><br \/>\n    *   <strong>Nginx \u00c7al\u0131\u015fm\u0131yor mu?<\/strong> <code>sudo service nginx status<\/code> komutuyla Nginx&#8217;in \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun.<br \/>\n    *   <strong>G\u00fcvenlik Duvar\u0131 Engeli:<\/strong> 80 ve 443 portlar\u0131n\u0131n a\u00e7\u0131k oldu\u011fundan emin olun (<code>iptables<\/code> ayarlar\u0131n\u0131 kontrol edin).<br \/>\n    *   <strong>Nginx Yap\u0131land\u0131rma Hatas\u0131:<\/strong> <code>sudo nginx -t<\/code> komutuyla yap\u0131land\u0131rman\u0131n s\u00f6zdizimini kontrol edin. Hatalar\u0131 d\u00fczeltip <code>sudo service nginx restart<\/code> ile yeniden ba\u015flat\u0131n.<br \/>\n    *   <strong>JWPlayer Dosya Yolu Yanl\u0131\u015f:<\/strong> HTML dosyas\u0131ndaki <code><script src=\"\/jwplayer\/jwplayer.js\"><\/script><\/code> yolunun do\u011fru oldu\u011fundan ve JWPlayer dosyalar\u0131n\u0131n Nginx taraf\u0131ndan eri\u015filebilir oldu\u011fundan emin olun.<br \/>\n    *   <strong>Video Dosya Yolu Yanl\u0131\u015f:<\/strong> <code>jwplayer().setup({ file: \"\/videos\/sample_video.mp4\" })<\/code> i\u00e7indeki <code>file<\/code> yolunun do\u011fru oldu\u011fundan ve video dosyas\u0131n\u0131n Nginx taraf\u0131ndan eri\u015filebilir oldu\u011fundan emin olun.<br \/>\n    *   <strong>Dosya \u0130zinleri:<\/strong> JWPlayer ve video dosyalar\u0131n\u0131n bulundu\u011fu dizinlerin ve dosyalar\u0131n Nginx kullan\u0131c\u0131s\u0131 taraf\u0131ndan okunabilir oldu\u011fundan emin olun (<code>chmod<\/code>, <code>chown<\/code> ayarlar\u0131n\u0131 kontrol edin).<br \/>\n    *   <strong>Taray\u0131c\u0131 Konsolu:<\/strong> Taray\u0131c\u0131n\u0131z\u0131n geli\u015ftirici ara\u00e7lar\u0131n\u0131 (F12) a\u00e7arak Console sekmesinde JavaScript hatalar\u0131 veya a\u011f sekmesinde (Network) 404\/403 hatalar\u0131 olup olmad\u0131\u011f\u0131n\u0131 kontrol edin.<br \/>\n*   <strong>Video Oynat\u0131l\u0131yor ama \u0130leri\/Geri Sarma \u00c7al\u0131\u015fm\u0131yor:<\/strong><br \/>\n    *   <strong><code>mp4<\/code> Y\u00f6nergesi Eksik:<\/strong> Nginx yap\u0131land\u0131rman\u0131zdaki <code>location \/videos\/<\/code> blo\u011funda <code>mp4;<\/code> y\u00f6nergesinin bulundu\u011fundan emin olun.<br \/>\n    *   <strong>MOOV Atomu Konumu:<\/strong> Video dosyan\u0131z\u0131n MOOV atomunun (meta verileri) dosyan\u0131n ba\u015f\u0131nda oldu\u011fundan emin olun. Gerekirse <code>ffmpeg -movflags faststart<\/code> ile d\u00fczeltin.<br \/>\n*   <strong>Video Kalitesi D\u00fc\u015f\u00fck veya Tak\u0131l\u0131yor:<\/strong><br \/>\n    *   <strong>Video Kodlamas\u0131:<\/strong> Videonuzun bit h\u0131z\u0131 \u00e7ok y\u00fcksek olabilir veya iyi optimize edilmemi\u015f olabilir. Daha d\u00fc\u015f\u00fck bit h\u0131zlar\u0131 veya farkl\u0131 bir kodlama ayar\u0131 deneyin.<br \/>\n    *   <strong>Sunucu Kaynaklar\u0131:<\/strong> Sunucunuzun CPU, RAM veya a\u011f bant geni\u015fli\u011fi yetersiz kal\u0131yor olabilir.<br \/>\n    *   <strong>\u0130stemci Bant Geni\u015fli\u011fi:<\/strong> Kullan\u0131c\u0131n\u0131n internet ba\u011flant\u0131s\u0131 yava\u015f olabilir.<\/p>\n<h3>Geli\u015fmi\u015f Konfig\u00fcrasyon ve Optimizasyon \u0130pu\u00e7lar\u0131<\/h3>\n<p>Temel kurulumu tamamlad\u0131ktan sonra, video ak\u0131\u015f\u0131 deneyiminizi daha da geli\u015ftirmek i\u00e7in baz\u0131 ileri d\u00fczey konfig\u00fcrasyon ve optimizasyon ipu\u00e7lar\u0131n\u0131 d\u00fc\u015f\u00fcnebilirsiniz.<\/p>\n<h4>Adaptive Bitrate Streaming (HLS\/DASH) Hakk\u0131nda K\u0131sa Bir Not<\/h4>\n<p>Bu rehberde MP4 pseudo-streaming&#8217;e odakland\u0131k. Bu y\u00f6ntem, tek bir video dosyas\u0131yla \u00e7al\u0131\u015f\u0131r ve kullan\u0131c\u0131n\u0131n bant geni\u015fli\u011fine g\u00f6re video kalitesini dinamik olarak ayarlayamaz. Daha geli\u015fmi\u015f bir ak\u0131\u015f deneyimi i\u00e7in <strong>Adaptive Bitrate Streaming (ABR)<\/strong> teknolojileri olan <strong>HTTP Live Streaming (HLS)<\/strong> ve <strong>MPEG-DASH<\/strong> kullan\u0131l\u0131r.<\/p>\n<p>*   <strong>HLS (HTTP Live Streaming):<\/strong> \u00d6zellikle Apple cihazlar\u0131 ve Safari taray\u0131c\u0131s\u0131 taraf\u0131ndan desteklenen, par\u00e7alara ayr\u0131lm\u0131\u015f videolar\u0131n farkl\u0131 kalitelerde sunulmas\u0131n\u0131 sa\u011flayan bir protokold\u00fcr. Nginx, <code>nginx-rtmp-module<\/code> gibi \u00fc\u00e7\u00fcnc\u00fc taraf mod\u00fcllerle HLS ak\u0131\u015f\u0131n\u0131 destekleyebilir.<br \/>\n*   <strong>DASH (Dynamic Adaptive Streaming over HTTP):<\/strong> HLS&#8217;ye benzer \u015fekilde \u00e7al\u0131\u015fan, ancak end\u00fcstri standard\u0131 olmay\u0131 hedefleyen a\u00e7\u0131k bir protokold\u00fcr.<\/p>\n<p>Bu teknolojiler, videoyu farkl\u0131 \u00e7\u00f6z\u00fcn\u00fcrl\u00fck ve bit h\u0131zlar\u0131nda k\u00fc\u00e7\u00fck par\u00e7alara (segmentlere) b\u00f6ler ve bir manifest dosyas\u0131 (playlist) olu\u015fturur. Oynat\u0131c\u0131 (JWPlayer gibi), kullan\u0131c\u0131n\u0131n bant geni\u015fli\u011fine g\u00f6re en uygun segmenti se\u00e7erek kesintisiz bir deneyim sunar. Nginx, bu segment dosyalar\u0131n\u0131 ve manifest dosyalar\u0131n\u0131 statik olarak sunabilir. Ancak HLS\/DASH i\u00e7in videolar\u0131n haz\u0131rlanmas\u0131 (transcoding ve segmentation) ve Nginx&#8217;in bu dosyalar\u0131 do\u011fru \u015fekilde sunacak ek mod\u00fcllerle yap\u0131land\u0131r\u0131lmas\u0131, bu rehberin kapsam\u0131n\u0131n d\u0131\u015f\u0131ndad\u0131r ve daha karma\u015f\u0131k bir kurulum gerektirir. Ancak gelecekteki projeleriniz i\u00e7in bu teknolojileri ara\u015ft\u0131rman\u0131z faydal\u0131 olacakt\u0131r.<\/p>\n<h4>CDN Entegrasyonu<\/h4>\n<p>\u0130\u00e7erik Da\u011f\u0131t\u0131m A\u011f\u0131 (CDN), videolar\u0131n\u0131z\u0131 d\u00fcnya genelindeki farkl\u0131 sunuculara (edge sunucular\u0131na) \u00f6nbelle\u011fe alarak kullan\u0131c\u0131lar\u0131n\u0131za co\u011frafi olarak daha yak\u0131n bir noktadan sunar. Bu, \u00f6zellikle uluslararas\u0131 bir kitleniz varsa video y\u00fckleme s\u00fcrelerini azalt\u0131r ve ak\u0131\u015f performans\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r. Nginx sunucunuz, CDN&#8217;in &#8220;origin&#8221; sunucusu olarak g\u00f6rev yapar. CDN sa\u011flay\u0131c\u0131n\u0131z\u0131 (Cloudflare, Akamai, Amazon CloudFront vb.) yap\u0131land\u0131r\u0131rken, Nginx sunucunuzun IP adresini veya alan ad\u0131n\u0131 belirtmeniz yeterlidir.<\/p>\n<h4>Hotlinking Korumas\u0131<\/h4>\n<p>Hotlinking, ba\u015fka bir web sitesinin sizin sunucunuzdaki video dosyalar\u0131n\u0131 do\u011frudan kendi sayfalar\u0131nda kullanmas\u0131 durumudur. Bu, sizin bant geni\u015fli\u011finizi t\u00fcketir ve gereksiz maliyetlere yol a\u00e7abilir. Nginx&#8217;te hotlinking&#8217;i engellemek i\u00e7in <code>valid_referers<\/code> y\u00f6nergesini kullanabilirsiniz:<\/p>\n<pre><code class=\"language-nginx\">location \/videos\/ {\n    # ... di\u011fer ayarlar ...\n    valid_referers none blocked your_domain.com *.your_domain.com;\n    if ($invalid_referer) {\n        return 403; # Hotlink yapanlara 403 Forbidden hatas\u0131 d\u00f6nd\u00fcr\n    }\n}<\/code><\/pre>\n<p>Bu yap\u0131land\u0131rma, sadece <code>your_domain.com<\/code> veya onun alt alan adlar\u0131ndan gelen isteklerin videolara eri\u015fmesine izin verir. Di\u011fer t\u00fcm istekler 403 hatas\u0131 al\u0131r.<\/p>\n<h4>\u00d6nbellekleme (Caching)<\/h4>\n<p>Nginx, statik dosyalar i\u00e7in g\u00fc\u00e7l\u00fc \u00f6nbellekleme yeteneklerine sahiptir. Video dosyalar\u0131 genellikle b\u00fcy\u00fck oldu\u011fundan ve s\u0131k de\u011fi\u015fmedi\u011finden, taray\u0131c\u0131 taraf\u0131nda \u00f6nbelle\u011fe al\u0131nmalar\u0131 performans\u0131 art\u0131rabilir. <code>expires<\/code> y\u00f6nergesi ile taray\u0131c\u0131lara dosyalar\u0131 ne kadar s\u00fcreyle \u00f6nbellekte tutmalar\u0131 gerekti\u011fini s\u00f6yleyebilirsiniz:<\/p>\n<pre><code class=\"language-nginx\">location \/videos\/ {\n    # ... di\u011fer ayarlar ...\n    expires 30d; # Video dosyalar\u0131n\u0131 30 g\u00fcn boyunca taray\u0131c\u0131 \u00f6nbelle\u011finde tut\n    add_header Cache-Control \"public, must-revalidate\";\n}<\/code><\/pre>\n<p>Bu ayar, taray\u0131c\u0131lar\u0131n videolar\u0131 belirli bir s\u00fcre boyunca yerel \u00f6nbelleklerinde tutmas\u0131n\u0131 sa\u011flar, b\u00f6ylece ayn\u0131 videoyu tekrar izlemek istediklerinde sunucudan tekrar indirmelerine gerek kalmaz.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu kapsaml\u0131 rehberde, CentOS 6 i\u015fletim sistemi \u00fczerinde Nginx web sunucusu ve JWPlayer medya oynat\u0131c\u0131s\u0131n\u0131 kullanarak nas\u0131l g\u00fcvenilir ve y\u00fcksek performansl\u0131 bir video ak\u0131\u015f\u0131 \u00e7\u00f6z\u00fcm\u00fc olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m \u00f6\u011frendiniz. Nginx&#8217;in MP4 pseudo-streaming yetenekleri ve JWPlayer&#8217;\u0131n esnek oynatma \u00f6zellikleri bir araya geldi\u011finde, kullan\u0131c\u0131lar\u0131n\u0131za sorunsuz ve etkile\u015fimli bir video deneyimi sunabilirsiniz.<\/p>\n<p>Nginx kurulumundan ba\u015flayarak, video ak\u0131\u015f\u0131 i\u00e7in \u00f6zel yap\u0131land\u0131rmalar\u0131, video dosyalar\u0131n\u0131n haz\u0131rlanmas\u0131n\u0131 ve JWPlayer&#8217;\u0131n HTML sayfan\u0131za entegrasyonunu ele ald\u0131k. Ayr\u0131ca, kurulum sonras\u0131 test etme, sorun giderme ipu\u00e7lar\u0131 ve hotlinking korumas\u0131, CDN entegrasyonu ve \u00f6nbellekleme gibi geli\u015fmi\u015f optimizasyon tekniklerine de de\u011findik.<\/p>\n<p>Unutmay\u0131n ki, teknoloji s\u00fcrekli geli\u015fmektedir. Bu temel kurulum, bir\u00e7ok senaryo i\u00e7in yeterli olsa da, gelecekte daha karma\u015f\u0131k ve \u00f6l\u00e7eklenebilir video ak\u0131\u015f\u0131 \u00e7\u00f6z\u00fcmleri i\u00e7in HLS\/DASH gibi adaptif ak\u0131\u015f teknolojilerini ve bulut tabanl\u0131 hizmetleri ara\u015ft\u0131rman\u0131z faydal\u0131 olacakt\u0131r. Ancak bu rehberde sunulan Nginx ve JWPlayer kombinasyonu, CentOS 6 gibi stabil bir ortamda g\u00fc\u00e7l\u00fc bir temel olu\u015fturur ve video i\u00e7eriklerinizi g\u00fcvenle sunman\u0131z\u0131 sa\u011flar. Bu yap\u0131land\u0131rma ile, kullan\u0131c\u0131lar\u0131n\u0131z\u0131n videolar\u0131n\u0131za h\u0131zl\u0131 ve etkili bir \u015fekilde eri\u015febilmesini sa\u011flayarak web sitenizin veya uygulaman\u0131z\u0131n de\u011ferini art\u0131rabilirsiniz.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Nginx ve JWPlayer ile CentOS 6 \u00dczerinde Video Ak\u0131\u015f\u0131 Nas\u0131l Yap\u0131l\u0131r?\nGiri\u015f\nG\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda video i\u00e7erikleri, web sitelerini","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":[241],"tags":[],"class_list":{"0":"post-37332","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-linux","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 ve JWPlayer ile CentOS 6 \u00dczerinde Video Ak\u0131\u015f\u0131 Nas\u0131l Yap\u0131l\u0131r? - 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\/nginx-ve-jwplayer-ile-centos-6-uzerinde-video-akisi-nasil-yapilir\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Nginx ve JWPlayer ile CentOS 6 \u00dczerinde Video Ak\u0131\u015f\u0131 Nas\u0131l Yap\u0131l\u0131r?\" \/>\n<meta property=\"og:description\" content=\"Nginx ve JWPlayer ile CentOS 6 \u00dczerinde Video Ak\u0131\u015f\u0131 Nas\u0131l Yap\u0131l\u0131r?  Giri\u015f G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda video i\u00e7erikleri, web sitelerini\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/nginx-ve-jwplayer-ile-centos-6-uzerinde-video-akisi-nasil-yapilir\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-31T05:40:52+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=\"20 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginx-ve-jwplayer-ile-centos-6-uzerinde-video-akisi-nasil-yapilir\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginx-ve-jwplayer-ile-centos-6-uzerinde-video-akisi-nasil-yapilir\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Nginx ve JWPlayer ile CentOS 6 \u00dczerinde Video Ak\u0131\u015f\u0131 Nas\u0131l Yap\u0131l\u0131r?\",\"datePublished\":\"2025-12-31T05:40:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginx-ve-jwplayer-ile-centos-6-uzerinde-video-akisi-nasil-yapilir\/\"},\"wordCount\":3185,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Linux\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/nginx-ve-jwplayer-ile-centos-6-uzerinde-video-akisi-nasil-yapilir\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginx-ve-jwplayer-ile-centos-6-uzerinde-video-akisi-nasil-yapilir\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/nginx-ve-jwplayer-ile-centos-6-uzerinde-video-akisi-nasil-yapilir\/\",\"name\":\"Nginx ve JWPlayer ile CentOS 6 \u00dczerinde Video Ak\u0131\u015f\u0131 Nas\u0131l Yap\u0131l\u0131r? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-31T05:40:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginx-ve-jwplayer-ile-centos-6-uzerinde-video-akisi-nasil-yapilir\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/nginx-ve-jwplayer-ile-centos-6-uzerinde-video-akisi-nasil-yapilir\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginx-ve-jwplayer-ile-centos-6-uzerinde-video-akisi-nasil-yapilir\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Nginx ve JWPlayer ile CentOS 6 \u00dczerinde Video Ak\u0131\u015f\u0131 Nas\u0131l Yap\u0131l\u0131r?\"}]},{\"@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 ve JWPlayer ile CentOS 6 \u00dczerinde Video Ak\u0131\u015f\u0131 Nas\u0131l Yap\u0131l\u0131r? - 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\/nginx-ve-jwplayer-ile-centos-6-uzerinde-video-akisi-nasil-yapilir\/","og_locale":"tr_TR","og_type":"article","og_title":"Nginx ve JWPlayer ile CentOS 6 \u00dczerinde Video Ak\u0131\u015f\u0131 Nas\u0131l Yap\u0131l\u0131r?","og_description":"Nginx ve JWPlayer ile CentOS 6 \u00dczerinde Video Ak\u0131\u015f\u0131 Nas\u0131l Yap\u0131l\u0131r?  Giri\u015f G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda video i\u00e7erikleri, web sitelerini","og_url":"https:\/\/fatihsoysal.com\/blog\/nginx-ve-jwplayer-ile-centos-6-uzerinde-video-akisi-nasil-yapilir\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-31T05:40:52+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"20 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/nginx-ve-jwplayer-ile-centos-6-uzerinde-video-akisi-nasil-yapilir\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/nginx-ve-jwplayer-ile-centos-6-uzerinde-video-akisi-nasil-yapilir\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Nginx ve JWPlayer ile CentOS 6 \u00dczerinde Video Ak\u0131\u015f\u0131 Nas\u0131l Yap\u0131l\u0131r?","datePublished":"2025-12-31T05:40:52+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/nginx-ve-jwplayer-ile-centos-6-uzerinde-video-akisi-nasil-yapilir\/"},"wordCount":3185,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Linux"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/nginx-ve-jwplayer-ile-centos-6-uzerinde-video-akisi-nasil-yapilir\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/nginx-ve-jwplayer-ile-centos-6-uzerinde-video-akisi-nasil-yapilir\/","url":"https:\/\/fatihsoysal.com\/blog\/nginx-ve-jwplayer-ile-centos-6-uzerinde-video-akisi-nasil-yapilir\/","name":"Nginx ve JWPlayer ile CentOS 6 \u00dczerinde Video Ak\u0131\u015f\u0131 Nas\u0131l Yap\u0131l\u0131r? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-31T05:40:52+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/nginx-ve-jwplayer-ile-centos-6-uzerinde-video-akisi-nasil-yapilir\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/nginx-ve-jwplayer-ile-centos-6-uzerinde-video-akisi-nasil-yapilir\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/nginx-ve-jwplayer-ile-centos-6-uzerinde-video-akisi-nasil-yapilir\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Nginx ve JWPlayer ile CentOS 6 \u00dczerinde Video Ak\u0131\u015f\u0131 Nas\u0131l Yap\u0131l\u0131r?"}]},{"@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\/37332","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=37332"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37332\/revisions"}],"predecessor-version":[{"id":37333,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37332\/revisions\/37333"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37332"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37332"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37332"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}