{"id":886,"date":"2026-09-22T12:14:53","date_gmt":"2026-09-22T12:14:53","guid":{"rendered":"https:\/\/www.vps.tc\/blog\/?p=886"},"modified":"2026-09-22T09:50:04","modified_gmt":"2026-09-22T09:50:04","slug":"ubuntu-nginx-kurulumu-ilk-yapilandirma","status":"publish","type":"post","link":"https:\/\/www.vps.tc\/blog\/tr\/ubuntu-nginx-kurulumu-ilk-yapilandirma\/","title":{"rendered":"Ubuntu&#8217;da Nginx Kurulumu ve \u0130lk Yap\u0131land\u0131rma"},"content":{"rendered":"<div class=\"aiw-summary\" id=\"aiw-ozet\">\n<p class=\"aiw-summary-title\">H\u0131zl\u0131 \u00d6zet &#8211; Ubuntu Nginx Kurulumu<\/p>\n<p>Ubuntu&#039;da Nginx kurulumunun temel ak\u0131\u015f\u0131 paket y\u00fckleme, servis do\u011frulama, port a\u00e7ma ve alan ad\u0131 i\u00e7in server block haz\u0131rlamad\u0131r. Her yap\u0131land\u0131rma de\u011fi\u015fikli\u011fi reload \u00f6ncesinde test edilmelidir.<\/p>\n<ul>\n<li><strong>Paketi kurun<\/strong> \u2014 Paket listesini g\u00fcncelleyip Nginx&#039;i sudo apt install nginx komutuyla y\u00fckleyin.<\/li>\n<li><strong>Servisi do\u011frulay\u0131n<\/strong> \u2014 systemctl ve curl ile Nginx&#039;in \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve yerel HTTP yan\u0131t\u0131 verdi\u011fini kontrol edin.<\/li>\n<li><strong>Portlar\u0131 a\u00e7\u0131n<\/strong> \u2014 UFW veya sa\u011flay\u0131c\u0131 firewall&#039;\u0131nda TCP 80 ve HTTPS kullanacaksan\u0131z TCP 443&#039;e izin verin.<\/li>\n<li><strong>Server block olu\u015fturun<\/strong> \u2014 Alan ad\u0131n\u0131, web k\u00f6k dizinini, log yollar\u0131n\u0131 ve try_files kural\u0131n\u0131 site dosyas\u0131nda tan\u0131mlay\u0131n.<\/li>\n<li><strong>Yap\u0131land\u0131rmay\u0131 test edin<\/strong> \u2014 Reload i\u015fleminden \u00f6nce nginx -t ile s\u00f6zdizimini ve dosya y\u00fcklenebilirli\u011fini do\u011frulay\u0131n.<\/li>\n<li><strong>DNS ve HTTPS ekleyin<\/strong> \u2014 A veya AAAA kayd\u0131n\u0131 sunucuya y\u00f6nlendirin, HTTP eri\u015fimi \u00e7al\u0131\u015ft\u0131ktan sonra TLS sertifikas\u0131 yap\u0131land\u0131r\u0131n.<\/li>\n<\/ul>\n<\/div>\n<p class=\"aiw-lead\">Ubuntu&#039;da Nginx kurulumu, apt ile paketi y\u00fcklemekten ibaret de\u011fildir. Servisin \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulamak, TCP 80 ve 443 eri\u015fimini a\u00e7mak, alan ad\u0131 i\u00e7in do\u011fru server block olu\u015fturmak ve her de\u011fi\u015fiklikten \u00f6nce nginx -t \u00e7al\u0131\u015ft\u0131rmak gerekir. Bu s\u0131ra, yanl\u0131\u015f site yan\u0131t\u0131 ve gereksiz kesinti riskini belirgin bi\u00e7imde azalt\u0131r.<\/p>\n<div class=\"aiw-toc\" style=\"border:1px solid #dbe3ea;border-radius:8px;padding:16px 20px;margin:0 0 28px\">\n<p class=\"aiw-toc-head\"><strong>\u0130\u00e7indekiler<\/strong><span class=\"aiw-toc-meta\"> \u00b7 10 dk okuma<\/span><\/p>\n<ol style=\"margin:10px 0 0;padding-left:22px\">\n<li><a href=\"#ubuntu-nginx-kurulumu-icin-once-ne-hazirlanmali\">Ubuntu Nginx kurulumu i\u00e7in \u00f6nce ne haz\u0131rlanmal\u0131?<\/a><\/li>\n<li><a href=\"#ubuntu-nginx-kurulumu-nasil-yapilir\">Ubuntu Nginx kurulumu nas\u0131l yap\u0131l\u0131r?<\/a><\/li>\n<li><a href=\"#ufw-ile-http-ve-https-portlari-nasil-acilir\">UFW ile HTTP ve HTTPS portlar\u0131 nas\u0131l a\u00e7\u0131l\u0131r?<\/a><\/li>\n<li><a href=\"#nginx-yapilandirma-dosyalari-nerede\">Nginx yap\u0131land\u0131rma dosyalar\u0131 nerede?<\/a><\/li>\n<li><a href=\"#alan-adi-icin-server-block-nasil-olusturulur\">Alan ad\u0131 i\u00e7in server block nas\u0131l olu\u015fturulur?<\/a><\/li>\n<li><a href=\"#alan-adi-dns-kaydi-nginxe-nasil-baglanir\">Alan ad\u0131 DNS kayd\u0131 Nginx&#039;e nas\u0131l ba\u011flan\u0131r?<\/a><\/li>\n<li><a href=\"#nginx-yapilandirmasi-nasil-test-edilir-ve-hata-ayiklanir\">Nginx yap\u0131land\u0131rmas\u0131 nas\u0131l test edilir ve hata ay\u0131klan\u0131r?<\/a><\/li>\n<li><a href=\"#ilk-yapilandirmadan-sonra-https-ne-zaman-eklenir\">\u0130lk yap\u0131land\u0131rmadan sonra HTTPS ne zaman eklenir?<\/a><\/li>\n<li><a href=\"#nginx-kurulumu-sirasinda-hangi-izin-ve-bakim-ayarlari-gerekir\">Nginx kurulumu s\u0131ras\u0131nda hangi izin ve bak\u0131m ayarlar\u0131 gerekir?<\/a><\/li>\n<li><a href=\"#nginxi-yayina-almadan-once-kontrol-edin\">Nginx&#039;i Yay\u0131na Almadan \u00d6nce Kontrol Edin<\/a><\/li>\n<li><a href=\"#sik-sorulan-sorular\">S\u0131k Sorulan Sorular<\/a><\/li>\n<li><a href=\"#kaynaklar\">Kaynaklar<\/a><\/li>\n<\/ol>\n<\/div>\n<h2 id=\"ubuntu-nginx-kurulumu-icin-once-ne-hazirlanmali\">Ubuntu Nginx kurulumu i\u00e7in \u00f6nce ne haz\u0131rlanmal\u0131?<\/h2>\n<p>Ubuntu sunucuda Nginx kurulumu i\u00e7in g\u00fcncel paket listesi al\u0131n\u0131r, <code>nginx<\/code> paketi <code>apt<\/code> ile y\u00fcklenir ve servis durumu do\u011frulan\u0131r. Ard\u0131ndan g\u00fcvenlik duvar\u0131nda TCP 80 a\u00e7\u0131l\u0131r, alan ad\u0131 i\u00e7in bir server block haz\u0131rlan\u0131r, yap\u0131land\u0131rma <code>nginx -t<\/code> ile test edilir ve servis yeniden y\u00fcklenir. HTTPS kullan\u0131lacaksa sonraki a\u015famada TCP 443 ile TLS sertifikas\u0131 eklenir.<\/p>\n<p>Bu s\u0131ra k\u00fc\u00e7\u00fck g\u00f6r\u00fcnebilir; fakat her ad\u0131m farkl\u0131 bir sorunu ay\u0131r\u0131r. Servis \u00e7al\u0131\u015fm\u0131yorsa DNS&#8217;e, firewall kapal\u0131ysa Nginx yap\u0131land\u0131rmas\u0131na odaklanmak gereksiz zaman kaybettirir.<\/p>\n<h2 id=\"ubuntu-nginx-kurulumu-nasil-yapilir\">Ubuntu Nginx kurulumu nas\u0131l yap\u0131l\u0131r?<\/h2>\n<p>\u0130\u015flemler Ubuntu 22.04 veya 24.04 \u00fczerinde, sudo yetkisine sahip bir kullan\u0131c\u0131yla uygulanabilir. Root hesab\u0131yla s\u00fcrekli oturum a\u00e7mak yerine komutlar\u0131n ba\u015f\u0131na <code>sudo<\/code> eklemek yetki kapsam\u0131n\u0131 daralt\u0131r. Kurulumdan \u00f6nce i\u015fletim sistemi paketlerini g\u00fcncellemek, \u00f6zellikle yeni a\u00e7\u0131lm\u0131\u015f bir VPS \u00fczerinde eski paket listesiyle \u00e7al\u0131\u015fmay\u0131 \u00f6nler.<\/p>\n<pre><code>sudo apt update\nsudo apt install nginx<\/code><\/pre>\n<p><code>apt update<\/code> depolardaki paket indekslerini yeniler; tek ba\u015f\u0131na paketleri y\u00fckseltmez. <code>apt install nginx<\/code> ise Nginx ve gerekli ba\u011f\u0131ml\u0131l\u0131klar\u0131 kurar. Kurulum s\u0131ras\u0131nda Ubuntu genellikle servisi ba\u015flat\u0131r. Yine de bunu varsaymak yerine servis durumunu a\u00e7\u0131k\u00e7a kontrol etmek daha g\u00fcvenlidir.<\/p>\n<pre><code>sudo systemctl enable --now nginx\nsudo systemctl status nginx --no-pager<\/code><\/pre>\n<p><code>enable --now<\/code> iki i\u015fi birlikte yapar: Nginx&#8217;in a\u00e7\u0131l\u0131\u015fta ba\u015flamas\u0131n\u0131 etkinle\u015ftirir ve servisi hemen \u00e7al\u0131\u015ft\u0131r\u0131r. Durum \u00e7\u0131kt\u0131s\u0131nda <code>Active: active (running)<\/code> g\u00f6r\u00fclmelidir. Yerel HTTP yan\u0131t\u0131n\u0131 da test edin.<\/p>\n<pre><code>curl -I http:\/\/127.0.0.1<\/code><\/pre>\n<p>Normal bir kurulumda HTTP durum sat\u0131r\u0131nda <code>200 OK<\/code> veya y\u00f6nlendirme yap\u0131land\u0131rmas\u0131na ba\u011fl\u0131 ba\u015fka bir ba\u015far\u0131l\u0131 yan\u0131t g\u00f6r\u00fcl\u00fcr. Ubuntu&#8217;nun varsay\u0131lan Nginx sayfas\u0131 taray\u0131c\u0131dan a\u00e7\u0131l\u0131yorsa servis temel d\u00fczeyde \u00e7al\u0131\u015f\u0131yor demektir; alan ad\u0131 ve uygulama ayarlar\u0131 hen\u00fcz yap\u0131lm\u0131\u015f say\u0131lmaz.<\/p>\n<p><strong>Kurulumu do\u011frulay\u0131n<\/strong> &#8211; <code>systemctl<\/code> ve <code>curl<\/code> \u00e7\u0131kt\u0131lar\u0131nda servisin \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6rmeden sanal host yap\u0131land\u0131rmas\u0131na ge\u00e7meyin.<\/p>\n<div class=\"aiw-callout aiw-callout-tip\">\n<p class=\"aiw-callout-label\">\u0130pucu<\/p>\n<p>Kurulumdan hemen sonra taray\u0131c\u0131ya ge\u00e7mek yerine \u00f6nce curl -I http:\/\/127.0.0.1 \u00e7al\u0131\u015ft\u0131r\u0131n. B\u00f6ylece DNS ve firewall sorunlar\u0131n\u0131 Nginx servis sorunlar\u0131ndan ay\u0131rabilirsiniz.<\/p>\n<\/div>\n<h2 id=\"ufw-ile-http-ve-https-portlari-nasil-acilir\">UFW ile HTTP ve HTTPS portlar\u0131 nas\u0131l a\u00e7\u0131l\u0131r?<\/h2>\n<p>\u0130nternetten eri\u015filecek bir web sunucusunda TCP 80 HTTP, TCP 443 ise HTTPS i\u00e7in kullan\u0131l\u0131r. UFW etkinse bu portlara izin verilmelidir. SSH ba\u011flant\u0131s\u0131 s\u00fcrerken firewall kurallar\u0131n\u0131 de\u011fi\u015ftiriyorsan\u0131z, kulland\u0131\u011f\u0131n\u0131z SSH portuna eri\u015fimin a\u00e7\u0131k oldu\u011funu \u00f6nce do\u011frulay\u0131n. Aksi halde web ayar\u0131ndan ba\u011f\u0131ms\u0131z bir eri\u015fim kesintisi olu\u015fabilir.<\/p>\n<pre><code>sudo ufw status verbose\nsudo ufw allow 'Nginx Full'\nsudo ufw status numbered<\/code><\/pre>\n<p><code>Nginx Full<\/code> profili TCP 80 ve 443 i\u00e7in izin ekler. Sadece HTTP kullan\u0131lan ge\u00e7ici bir test ortam\u0131nda <code>sudo ufw allow 'Nginx HTTP'<\/code> yeterlidir. UFW kapal\u0131ysa bu komutlar kural ekler; fakat trafi\u011fi filtrelemez. Bulut sa\u011flay\u0131c\u0131s\u0131n\u0131n g\u00fcvenlik grubu veya VPS panelindeki a\u011f firewall&#8217;\u0131 da ayr\u0131ca kontrol edilmelidir.<\/p>\n<p>Portun ger\u00e7ekten dinlenip dinlenmedi\u011fini i\u015fletim sistemi \u00fczerinden g\u00f6rmek i\u00e7in:<\/p>\n<pre><code>sudo ss -ltnp | grep -E ':(80|443)\\s'<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>nginx<\/code> i\u015fleminin <code>0.0.0.0:80<\/code> veya <code>[::]:80<\/code> \u00fczerinde dinledi\u011fi g\u00f6r\u00fclebilir. Yaln\u0131zca <code>127.0.0.1:80<\/code> g\u00f6r\u00fcn\u00fcyorsa servis d\u0131\u015f a\u011fdan eri\u015filecek \u015fekilde dinlemiyor olabilir; ilgili <code>listen<\/code> sat\u0131r\u0131n\u0131 ve etkin yap\u0131land\u0131rmay\u0131 inceleyin.<\/p>\n<p><strong>Firewall&#8217;\u0131 dar tutun<\/strong> &#8211; yaln\u0131zca gereken TCP 22, 80 ve 443 portlar\u0131na izin verin. SSH portunuz 22 de\u011filse kural\u0131 kendi portunuza g\u00f6re de\u011fi\u015ftirin.<\/p>\n<h2 id=\"nginx-yapilandirma-dosyalari-nerede\">Nginx yap\u0131land\u0131rma dosyalar\u0131 nerede?<\/h2>\n<p>Ubuntu paket kurulumu, Nginx yap\u0131land\u0131rmas\u0131n\u0131 birka\u00e7 ayr\u0131 dizine b\u00f6ler. Ana dosya <code>\/etc\/nginx\/nginx.conf<\/code> olsa da site tan\u0131mlar\u0131 genellikle <code>\/etc\/nginx\/sites-available\/<\/code> alt\u0131nda tutulur ve etkin siteler <code>\/etc\/nginx\/sites-enabled\/<\/code> i\u00e7indeki sembolik ba\u011flant\u0131larla se\u00e7ilir.<\/p>\n<table>\n<thead>\n<tr>\n<th>Yol<\/th>\n<th>G\u00f6revi<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>\/etc\/nginx\/nginx.conf<\/code><\/td>\n<td>Genel ayarlar ve di\u011fer dosyalar\u0131n dahil edilmesi<\/td>\n<\/tr>\n<tr>\n<td><code>\/etc\/nginx\/sites-available\/<\/code><\/td>\n<td>Haz\u0131r veya pasif site yap\u0131land\u0131rmalar\u0131<\/td>\n<\/tr>\n<tr>\n<td><code>\/etc\/nginx\/sites-enabled\/<\/code><\/td>\n<td>Aktif server block sembolik ba\u011flant\u0131lar\u0131<\/td>\n<\/tr>\n<tr>\n<td><code>\/var\/www\/html<\/code><\/td>\n<td>Ubuntu varsay\u0131lan site k\u00f6k dizini<\/td>\n<\/tr>\n<tr>\n<td><code>\/var\/log\/nginx\/<\/code><\/td>\n<td>Access ve error log dosyalar\u0131<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Bir dosyay\u0131 etkinle\u015ftirmek i\u00e7in kopyalamak yerine sembolik ba\u011flant\u0131 kullanmak y\u00f6netimi kolayla\u015ft\u0131r\u0131r. Siteyi devre d\u0131\u015f\u0131 b\u0131rakmak i\u00e7in ba\u011flant\u0131 kald\u0131r\u0131labilir, as\u0131l yap\u0131land\u0131rma dosyas\u0131 korunur.<\/p>\n<pre><code>sudo ls -la \/etc\/nginx\/sites-enabled\/\nsudo ls -la \/etc\/nginx\/sites-available\/<\/code><\/pre>\n<p>Ubuntu&#8217;nun varsay\u0131lan sitesi \u00e7o\u011fu kurulumda <code>default<\/code> ad\u0131yla gelir. Alan ad\u0131 yap\u0131land\u0131rmas\u0131na ge\u00e7meden \u00f6nce bu dosyan\u0131n t\u00fcm istekleri yakalay\u0131p yakalamad\u0131\u011f\u0131n\u0131 bilmek gerekir. Birden fazla server block varsa Nginx, gelen iste\u011fin Host ba\u015fl\u0131\u011f\u0131 ve dinlenen adres bilgisine g\u00f6re e\u015fle\u015fme yapar.<\/p>\n<div class=\"aiw-callout aiw-callout-warn\">\n<p class=\"aiw-callout-label\">Dikkat<\/p>\n<p>Server block dosyas\u0131n\u0131 sites-available i\u00e7ine yazmak tek ba\u015f\u0131na yeterli de\u011fildir; sites-enabled alt\u0131nda sembolik ba\u011flant\u0131 bulunmal\u0131d\u0131r. Ayn\u0131 alan ad\u0131n\u0131 tan\u0131mlayan eski bir dosya da beklenmeyen yan\u0131t \u00fcretebilir.<\/p>\n<\/div>\n<h2 id=\"alan-adi-icin-server-block-nasil-olusturulur\">Alan ad\u0131 i\u00e7in server block nas\u0131l olu\u015fturulur?<\/h2>\n<p>Nginx&#8217;te Apache sanal host kavram\u0131na benzeyen yap\u0131land\u0131rma birimine <code>server block<\/code> denir. \u00d6rnek alan ad\u0131 <code>example.com<\/code>, site k\u00f6k\u00fc ise <code>\/var\/www\/example.com\/public<\/code> olsun. \u00d6nce dizin olu\u015fturulmal\u0131 ve web sunucusunun okuyabilece\u011fi bir dosya yerle\u015ftirilmelidir.<\/p>\n<pre><code>sudo mkdir -p \/var\/www\/example.com\/public\nsudo chown -R $USER:$USER \/var\/www\/example.com\/public\nsudo chmod -R 755 \/var\/www\/example.com\nprintf '%s\\n' '&lt;!doctype html&gt;&lt;html lang=\"tr\"&gt;&lt;body&gt;&lt;h1&gt;Nginx \u00e7al\u0131\u015f\u0131yor&lt;\/h1&gt;&lt;\/body&gt;&lt;\/html&gt;' | tee \/var\/www\/example.com\/public\/index.html<\/code><\/pre>\n<p>\u00dcretim ortam\u0131nda dosyalar\u0131n sahipli\u011fi uygulaman\u0131n \u00e7al\u0131\u015fma modeline g\u00f6re belirlenmelidir. Her \u015feyi <code>www-data<\/code> kullan\u0131c\u0131s\u0131na vermek her senaryoda do\u011fru de\u011fildir; deploy kullan\u0131c\u0131s\u0131n\u0131n yazma ihtiyac\u0131 ile Nginx&#8217;in yaln\u0131zca okuma ihtiyac\u0131 birbirinden ayr\u0131labilir.<\/p>\n<p>\u015eimdi server block dosyas\u0131n\u0131 olu\u015fturun:<\/p>\n<pre><code>sudo vim \/etc\/nginx\/sites-available\/example.com<\/code><\/pre>\n<pre><code>server {\n    listen 80;\n    listen [::]:80;\n\n    server_name example.com www.example.com;\n    root \/var\/www\/example.com\/public;\n    index index.html index.htm;\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        try_files $uri $uri\/ =404;\n    }\n}<\/code><\/pre>\n<p><code>server_name<\/code> alan ad\u0131 e\u015fle\u015fmesini, <code>root<\/code> dosyalar\u0131n aranaca\u011f\u0131 dizini, <code>index<\/code> ise dizin iste\u011finde denenecek dosyalar\u0131 belirtir. <code>try_files<\/code> mevcut dosyay\u0131 sunar; dosya bulunamazsa <code>404<\/code> d\u00f6nd\u00fcr\u00fcr. PHP, Node.js veya ba\u015fka bir uygulama kullan\u0131l\u0131yorsa bu b\u00f6l\u00fcm uygulaman\u0131n gerektirdi\u011fi proxy ya da FastCGI ayarlar\u0131yla de\u011fi\u015ftirilir.<\/p>\n<p>Siteyi etkinle\u015ftirin ve varsay\u0131lan siteyi gerekiyorsa devre d\u0131\u015f\u0131 b\u0131rak\u0131n:<\/p>\n<pre><code>sudo ln -s \/etc\/nginx\/sites-available\/example.com \/etc\/nginx\/sites-enabled\/example.com\nsudo rm -f \/etc\/nginx\/sites-enabled\/default\nsudo nginx -t\nsudo systemctl reload nginx<\/code><\/pre>\n<p><code>nginx -t<\/code> \u00f6nce s\u00f6zdizimini, ard\u0131ndan yap\u0131land\u0131rman\u0131n y\u00fcklenebilirli\u011fini kontrol eder. <code>syntax is ok<\/code> ve <code>test is successful<\/code> mesajlar\u0131 beklenir. <code>reload<\/code> \u00e7al\u0131\u015fan worker s\u00fcre\u00e7lerini kontroll\u00fc bi\u00e7imde yeniler; basit yap\u0131land\u0131rma de\u011fi\u015fikliklerinde <code>restart<\/code> kullanmak gereksiz kesinti yaratabilir.<\/p>\n<p><strong>Server block&#8217;u etkinle\u015ftirin<\/strong> &#8211; sembolik ba\u011flant\u0131y\u0131 olu\u015fturduktan sonra mutlaka <code>nginx -t<\/code> \u00e7al\u0131\u015ft\u0131r\u0131n ve yaln\u0131zca ba\u015far\u0131l\u0131 testten sonra reload yap\u0131n.<\/p>\n<h2 id=\"alan-adi-dns-kaydi-nginxe-nasil-baglanir\">Alan ad\u0131 DNS kayd\u0131 Nginx&#8217;e nas\u0131l ba\u011flan\u0131r?<\/h2>\n<p>Nginx&#8217;in do\u011fru \u00e7al\u0131\u015fmas\u0131 i\u00e7in alan ad\u0131n\u0131n DNS kay\u0131tlar\u0131 sunucunun genel IP adresini g\u00f6stermelidir. IPv4 i\u00e7in <code>A<\/code>, IPv6 i\u00e7in <code>AAAA<\/code> kayd\u0131 kullan\u0131l\u0131r. DNS panelindeki de\u011fer kadar, sunucunun ger\u00e7ekten o IP \u00fczerinde dinlemesi de \u00f6nemlidir.<\/p>\n<pre><code>dig +short A example.com\ndig +short AAAA example.com\ncurl -I -H 'Host: example.com' http:\/\/SUNUCU_IP<\/code><\/pre>\n<p>\u0130lk iki komut DNS&#8217;in d\u00f6nd\u00fcrd\u00fc\u011f\u00fc adresleri g\u00f6sterir. \u00dc\u00e7\u00fcnc\u00fc komut, DNS yay\u0131l\u0131m\u0131n\u0131 beklemeden belirli bir sunucuya Host ba\u015fl\u0131\u011f\u0131yla istek g\u00f6ndermeye yarar. Ger\u00e7ek alan ad\u0131n\u0131 kullanarak yap\u0131lan testte beklenen <code>server block<\/code> yan\u0131t\u0131 al\u0131nmal\u0131d\u0131r.<\/p>\n<p>DNS de\u011fi\u015fikliklerinin g\u00f6r\u00fcn\u00fcr hale gelme s\u00fcresi TTL, resolver \u00f6nbelle\u011fi ve sa\u011flay\u0131c\u0131 davran\u0131\u015f\u0131na g\u00f6re de\u011fi\u015febilir. Bu nedenle taray\u0131c\u0131da eski sonu\u00e7 g\u00f6r\u00fclmesi her zaman Nginx hatas\u0131 de\u011fildir. <em><a href=\"https:\/\/www.vps.tc\/blog\/tr\/dns-probe-finished-nxdomain-hatasi-nasil-cozulur\/\">DNS_PROBE_FINISHED_NXDOMAIN Hatas\u0131 Nas\u0131l \u00c7\u00f6z\u00fcl\u00fcr?<\/a><\/em> ba\u015fl\u0131kl\u0131 i\u00e7erikte de alan ad\u0131n\u0131n \u00e7\u00f6z\u00fcmlenemedi\u011fi durumlar ayr\u0131ca ele al\u0131n\u0131yor.<\/p>\n<p><strong>DNS&#8217;i terminalden do\u011frulay\u0131n<\/strong> &#8211; paneldeki kayd\u0131 do\u011fru kabul etmek yerine <code>dig +short<\/code> ile A ve AAAA sonu\u00e7lar\u0131n\u0131 sunucunun adresleriyle kar\u015f\u0131la\u015ft\u0131r\u0131n.<\/p>\n<div class=\"aiw-callout aiw-callout-example\">\n<p class=\"aiw-callout-label\">\u00d6rnek<\/p>\n<p>DNS kayd\u0131 hen\u00fcz yay\u0131lmad\u0131ysa, curl -I -H &#039;Host: example.com&#039; http:\/\/SUNUCU_IP komutu do\u011fru server block&#039;un do\u011frudan test edilmesini sa\u011flar. B\u00f6ylece taray\u0131c\u0131 \u00f6nbelle\u011fi veya resolver sonucu devreye girmeden e\u015fle\u015fme kontrol edilir.<\/p>\n<\/div>\n<h2 id=\"nginx-yapilandirmasi-nasil-test-edilir-ve-hata-ayiklanir\">Nginx yap\u0131land\u0131rmas\u0131 nas\u0131l test edilir ve hata ay\u0131klan\u0131r?<\/h2>\n<p>Bir de\u011fi\u015fiklikten sonra ilk ba\u015fvurulacak komut <code>nginx -t<\/code> olmal\u0131d\u0131r. Komut hata verirse reload yap\u0131lmaz ve \u00e7al\u0131\u015fan yap\u0131land\u0131rma korunur. Hata mesaj\u0131ndaki dosya yolu ile sat\u0131r numaras\u0131 do\u011frudan ilgili b\u00f6l\u00fcme g\u00f6t\u00fcr\u00fcr.<\/p>\n<pre><code>sudo nginx -t\nsudo nginx -T | less<\/code><\/pre>\n<p><code>nginx -T<\/code> ana dosyadan dahil edilen t\u00fcm yap\u0131land\u0131rmay\u0131 birle\u015ftirilmi\u015f halde yazd\u0131r\u0131r. Ayn\u0131 <code>server_name<\/code> de\u011ferinin birden fazla dosyada bulunmas\u0131 beklenmeyen e\u015fle\u015fmelere yol a\u00e7abilir; bu \u00e7\u0131kt\u0131 \u00e7ak\u0131\u015fmalar\u0131 aramak i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<p>Servis ba\u015flat\u0131lam\u0131yor veya istekler hata veriyorsa sistem g\u00fcnl\u00fckleri incelenmelidir.<\/p>\n<pre><code>sudo journalctl -u nginx -b --no-pager\nsudo tail -n 50 \/var\/log\/nginx\/error.log\nsudo tail -n 50 \/var\/log\/nginx\/example.com.error.log<\/code><\/pre>\n<p><code>permission denied<\/code>, yanl\u0131\u015f dosya yolu, port \u00e7ak\u0131\u015fmas\u0131 ve eksik sertifika yolu s\u0131k rastlanan nedenlerdir. Uygulama arka u\u00e7ta \u00e7al\u0131\u015f\u0131yor olsa bile Nginx&#8217;in verdi\u011fi <code>502 Bad Gateway<\/code> hatas\u0131, proxy hedefinin dinlememesi veya Unix socket izinlerinin yanl\u0131\u015f olmas\u0131yla ili\u015fkilendirilebilir. Bu durumda <em><a href=\"https:\/\/www.vps.tc\/blog\/tr\/502-bad-gateway-hatasi-nedir-nasil-cozulur\/\">502 Bad Gateway Hatas\u0131 Nedir ve Nas\u0131l \u00c7\u00f6z\u00fcl\u00fcr?<\/a><\/em> i\u00e7eri\u011findeki upstream kontrol ad\u0131mlar\u0131 izlenebilir.<\/p>\n<p><strong>Logu okuyun<\/strong> &#8211; yeniden ba\u015flatmadan \u00f6nce <code>journalctl<\/code>, Nginx error logu ve dinleyen portlar\u0131 birlikte inceleyin.<\/p>\n<h2 id=\"ilk-yapilandirmadan-sonra-https-ne-zaman-eklenir\">\u0130lk yap\u0131land\u0131rmadan sonra HTTPS ne zaman eklenir?<\/h2>\n<p>HTTP \u00fczerinden alan ad\u0131 eri\u015fimi do\u011fruland\u0131ktan sonra HTTPS yap\u0131land\u0131r\u0131lmal\u0131d\u0131r. TLS sertifikas\u0131 al\u0131nmadan \u00f6nce DNS kayd\u0131 do\u011fru olmal\u0131, TCP 80 ve 443 d\u0131\u015far\u0131dan eri\u015filebilir durumda bulunmal\u0131d\u0131r. Let&#8217;s Encrypt sertifikalar\u0131 i\u00e7in kullan\u0131lan do\u011frulama y\u00f6ntemine g\u00f6re HTTP-01 do\u011frulamas\u0131nda port 80 gerekir.<\/p>\n<p>Ubuntu \u00fczerinde Certbot kurulumu ve sertifika y\u00f6netimi i\u00e7in da\u011f\u0131t\u0131m\u0131n g\u00fcncel resmi y\u00f6nergeleri takip edilmelidir. Sertifika al\u0131nd\u0131ktan sonra Nginx server block&#8217;una 443 dinleyicisi, sertifika yollar\u0131 ve HTTP&#8217;den HTTPS&#8217;e y\u00f6nlendirme eklenir. Sertifika yenileme g\u00f6revinin ger\u00e7ekten \u00e7al\u0131\u015ft\u0131\u011f\u0131, yaln\u0131zca kurulum an\u0131nda de\u011fil, <code>certbot renew --dry-run<\/code> ile ayr\u0131ca s\u0131nanmal\u0131d\u0131r.<\/p>\n<p>HTTPS y\u00f6nlendirmesi yap\u0131l\u0131rken proxy arkas\u0131ndaki kurulumlarda <code>X-Forwarded-Proto<\/code> gibi ba\u015fl\u0131klar\u0131n do\u011fru i\u015flenmesi gerekir. Aksi halde uygulama HTTPS iste\u011fini HTTP san\u0131p sonsuz y\u00f6nlendirme d\u00f6ng\u00fcs\u00fc olu\u015fturabilir. WordPress kurulumu i\u00e7in haz\u0131rlanan <em><a href=\"https:\/\/www.vps.tc\/blog\/tr\/vpste-wordpress-kurulumu-adim-adim\/\">VPS&#8217;te WordPress Kurulumu: Ad\u0131m Ad\u0131m Rehber<\/a><\/em> i\u00e7eri\u011finde Nginx, PHP-FPM ve alan ad\u0131 katmanlar\u0131n\u0131n birlikte ele al\u0131nd\u0131\u011f\u0131 ak\u0131\u015f bulunabilir.<\/p>\n<div class=\"aiw-callout aiw-callout-field\">\n<p class=\"aiw-callout-label\">Sahadan not<\/p>\n<p>Bayram sabah\u0131 bir m\u00fc\u015fterinin alan ad\u0131nda sertifika s\u00fcresinin doldu\u011funu fark ettim. certbot renew &#8211;dry-run \u00e7\u0131kt\u0131s\u0131nda renewal g\u00f6revinin ba\u015far\u0131s\u0131z oldu\u011funu, systemctl list-timers i\u00e7inde de beklenen zamanlay\u0131c\u0131n\u0131n bulunmad\u0131\u011f\u0131n\u0131 g\u00f6rd\u00fcm; g\u00f6revi d\u00fczelttikten sonra sertifikay\u0131 yenileyip Nginx&#039;i reload ettim.<\/p>\n<\/div>\n<h2 id=\"nginx-kurulumu-sirasinda-hangi-izin-ve-bakim-ayarlari-gerekir\">Nginx kurulumu s\u0131ras\u0131nda hangi izin ve bak\u0131m ayarlar\u0131 gerekir?<\/h2>\n<p>Nginx&#8217;in web k\u00f6k dizinini okuyabilmesi i\u00e7in t\u00fcm \u00fcst dizinlerde ge\u00e7i\u015f izni, dosyalarda okuma izni bulunmal\u0131d\u0131r. Her yere <code>chmod 777<\/code> vermek \u00e7\u00f6z\u00fcm de\u011fildir; eri\u015fim sorununu geni\u015f yetkiyle \u00f6rt\u00fcp g\u00fcvenlik s\u0131n\u0131rlar\u0131n\u0131 kald\u0131r\u0131r. Uygulaman\u0131n yazmas\u0131 gereken <code>uploads<\/code> veya cache dizinleri ayr\u0131 de\u011ferlendirilmelidir.<\/p>\n<p>Loglar <code>\/var\/log\/nginx\/<\/code> alt\u0131nda birikir. Ubuntu paketi logrotate entegrasyonu sa\u011flasa da disk kullan\u0131m\u0131n\u0131 ve rotasyon durumunu izlemek gerekir.<\/p>\n<pre><code>sudo du -sh \/var\/log\/nginx\nsudo logrotate -d \/etc\/logrotate.d\/nginx\nsudo systemctl is-enabled nginx<\/code><\/pre>\n<p>\u0130lk komut loglar\u0131n kaplad\u0131\u011f\u0131 alan\u0131, ikinci komut rotasyon sim\u00fclasyonunu, \u00fc\u00e7\u00fcnc\u00fc komut ise a\u00e7\u0131l\u0131\u015fta otomatik ba\u015flatma durumunu g\u00f6sterir. Nginx&#8217;i g\u00fcncellemeden \u00f6nce mevcut yap\u0131land\u0131rmay\u0131 ve uygulama servislerini not almak, geri d\u00f6n\u00fc\u015f\u00fc kolayla\u015ft\u0131r\u0131r.<\/p>\n<p>\u0130\u015fletim sistemi g\u00fcncellemeleri s\u0131ras\u0131nda <code>apt<\/code> bir yap\u0131land\u0131rma dosyas\u0131 i\u00e7in se\u00e7im sorusu \u00e7\u0131karabilir. Yerel de\u011fi\u015fiklikler do\u011frudan paket dosyas\u0131na de\u011fil, site dosyalar\u0131na ve ayr\u0131 include dosyalar\u0131na yap\u0131ld\u0131\u011f\u0131nda bu risk azal\u0131r. Yap\u0131land\u0131rma dosyalar\u0131n\u0131 s\u00fcr\u00fcm kontrol\u00fcnde tutmak de\u011fi\u015fiklik ge\u00e7mi\u015fini g\u00f6r\u00fcn\u00fcr k\u0131lar; gizli anahtarlar\u0131 ayn\u0131 depoya koymay\u0131n.<\/p>\n<p><strong>\u0130zinleri s\u0131n\u0131rlay\u0131n<\/strong> &#8211; Nginx&#8217;in yaln\u0131zca okumas\u0131 gereken dizinleri yaz\u0131labilir hale getirmeyin ve log rotasyonunu d\u00fczenli kontrol edin.<\/p>\n<h2 id=\"nginxi-yayina-almadan-once-kontrol-edin\">Nginx&#039;i Yay\u0131na Almadan \u00d6nce Kontrol Edin<\/h2>\n<ul class=\"aiw-checklist\">\n<li>Ubuntu paket listesini g\u00fcncelleyin.<\/li>\n<li>Nginx servisinin active durumunu do\u011frulay\u0131n.<\/li>\n<li>SSH ba\u011flant\u0131s\u0131n\u0131 koruyarak firewall kurallar\u0131n\u0131 kontrol edin.<\/li>\n<li>TCP 80 ve 443 eri\u015fimini test edin.<\/li>\n<li>Alan ad\u0131 i\u00e7in do\u011fru A veya AAAA kayd\u0131n\u0131 olu\u015fturun.<\/li>\n<li>Server block sembolik ba\u011flant\u0131s\u0131n\u0131 kontrol edin.<\/li>\n<li>Reload \u00f6ncesinde nginx -t komutunu \u00e7al\u0131\u015ft\u0131r\u0131n.<\/li>\n<\/ul>\n<div class=\"aiw-cta\">\n<p>\u0130lk alan ad\u0131n\u0131z\u0131 ba\u011flad\u0131ktan sonra HTTP yan\u0131t\u0131n\u0131 do\u011frulay\u0131n; HTTPS ve uygulama proxy ayarlar\u0131n\u0131 ayr\u0131 de\u011fi\u015fiklikler olarak, her seferinde nginx -t kontrol\u00fcyle ilerletin.<\/p>\n<p class=\"aiw-cta-action\"><a href=\"https:\/\/www.vps.tc\/tr\/vps\">VPS paketlerini inceleyin<\/a><\/p>\n<\/div>\n<h2 id=\"sik-sorulan-sorular\">S\u0131k Sorulan Sorular<\/h2>\n<div class=\"aiw-faq\">\n<details class=\"aiw-faq-item\" open>\n<summary>Ubuntu&#039;da Nginx nas\u0131l kurulur?<\/summary>\n<p>\u00d6nce paket listesini yenileyin: sudo apt update. Ard\u0131ndan sudo apt install nginx komutunu \u00e7al\u0131\u015ft\u0131r\u0131n. Kurulumdan sonra sudo systemctl enable &#8211;now nginx ile servisi etkinle\u015ftirip ba\u015flat\u0131n. sudo systemctl status nginx &#8211;no-pager ve curl -I http:\/\/127.0.0.1 komutlar\u0131yla servisin \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulay\u0131n.<\/p>\n<\/details>\n<details class=\"aiw-faq-item\">\n<summary>Nginx Ubuntu&#039;da hangi portu kullan\u0131r?<\/summary>\n<p>Varsay\u0131lan HTTP dinleyicisi TCP 80, HTTPS dinleyicisi TCP 443&#039;t\u00fcr. Nginx&#039;in hangi adres ve portlarda dinledi\u011fini sudo ss -ltnp | grep -E &#039;:(80|443)\\s&#039; komutuyla g\u00f6rebilirsiniz. UFW, bulut g\u00fcvenlik grubu veya harici firewall kullan\u0131l\u0131yorsa ilgili portlara ayr\u0131ca izin verilmelidir.<\/p>\n<\/details>\n<details class=\"aiw-faq-item\">\n<summary>Ubuntu Nginx server block nereye yaz\u0131l\u0131r?<\/summary>\n<p>Site yap\u0131land\u0131rmas\u0131 genellikle \/etc\/nginx\/sites-available\/alan-adi dosyas\u0131na yaz\u0131l\u0131r. Etkinle\u015ftirmek i\u00e7in \/etc\/nginx\/sites-enabled\/ alt\u0131nda bu dosyaya sembolik ba\u011flant\u0131 olu\u015fturulur. Ard\u0131ndan sudo nginx -t ile test yap\u0131l\u0131r ve test ba\u015far\u0131l\u0131ysa sudo systemctl reload nginx \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r. Varsay\u0131lan site \u00e7ak\u0131\u015fma yap\u0131yorsa ba\u011flant\u0131s\u0131 kald\u0131r\u0131labilir.<\/p>\n<\/details>\n<details class=\"aiw-faq-item\">\n<summary>Nginx yap\u0131land\u0131rmas\u0131 nas\u0131l test edilir?<\/summary>\n<p>sudo nginx -t komutu yap\u0131land\u0131rman\u0131n s\u00f6zdizimini ve y\u00fcklenebilirli\u011fini kontrol eder. Ba\u015far\u0131l\u0131 testte syntax is ok ve test is successful mesajlar\u0131 g\u00f6r\u00fcl\u00fcr. T\u00fcm birle\u015fik yap\u0131land\u0131rmay\u0131 incelemek i\u00e7in sudo nginx -T, servis g\u00fcnl\u00fcklerini g\u00f6rmek i\u00e7in sudo journalctl -u nginx -b &#8211;no-pager kullan\u0131labilir. Hata \u00e7\u00f6z\u00fclmeden reload yap\u0131lmamal\u0131d\u0131r.<\/p>\n<\/details>\n<details class=\"aiw-faq-item\">\n<summary>Nginx neden 502 Bad Gateway verir?<\/summary>\n<p>502 Bad Gateway \u00e7o\u011funlukla Nginx&#039;in proxy_pass ile ba\u011fland\u0131\u011f\u0131 uygulama servisinin \u00e7al\u0131\u015fmamas\u0131, yanl\u0131\u015f portta dinlemesi veya Unix socket izinlerinin hatal\u0131 olmas\u0131 nedeniyle olu\u015fur. \u00d6nce error logu inceleyin, ard\u0131ndan ss -ltnp ile upstream portunu kontrol edin. PHP-FPM kullan\u0131l\u0131yorsa socket yolunun dosya sistemiyle ayn\u0131 oldu\u011funu do\u011frulay\u0131n.<\/p>\n<\/details>\n<details class=\"aiw-faq-item\">\n<summary>Nginx kurulumundan sonra HTTPS nas\u0131l eklenir?<\/summary>\n<p>\u00d6nce alan ad\u0131n\u0131n DNS kayd\u0131 sunucuya y\u00f6nelmeli ve HTTP eri\u015fimi \u00e7al\u0131\u015fmal\u0131d\u0131r. TCP 80 ile 443 d\u0131\u015far\u0131dan eri\u015filebilir olduktan sonra Certbot gibi resmi olarak belgelenen bir istemciyle sertifika al\u0131nabilir. Nginx server block&#039;una sertifika yollar\u0131 ve HTTPS y\u00f6nlendirmesi eklenir; yenileme i\u015flemi certbot renew &#8211;dry-run ile s\u0131nanmal\u0131d\u0131r.<\/p>\n<\/details>\n<\/div>\n<h2 id=\"kaynaklar\">Kaynaklar<\/h2>\n<ul class=\"aiw-sources\">\n<li><a href=\"https:\/\/nginx.org\/en\/docs\/\" target=\"_blank\" rel=\"noopener\">nginx.org &#8211; Nginx Documentation<\/a> \u2014 nginx.org<\/li>\n<li><a href=\"https:\/\/nginx.org\/en\/linux_packages.html\" target=\"_blank\" rel=\"noopener\">nginx.org &#8211; Linux Packages<\/a> \u2014 nginx.org<\/li>\n<li><a href=\"https:\/\/documentation.ubuntu.com\/server\/how-to\/web-services\/install-nginx\/\" target=\"_blank\" rel=\"noopener\">Ubuntu Server Documentation &#8211; Install Nginx<\/a> \u2014 documentation.ubuntu.com<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Ubuntu \u00fczerinde Nginx kurulumunu, UFW ayarlar\u0131n\u0131, alan ad\u0131 i\u00e7in server block olu\u015fturmay\u0131 ve yap\u0131land\u0131rmay\u0131 g\u00fcvenli bi\u00e7imde test etmeyi \u00f6\u011frenin.<\/p>\n","protected":false},"author":2,"featured_media":884,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[383],"tags":[],"class_list":["post-886","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux"],"lang":"tr","translations":{"tr":886,"en":887},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts\/886","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/comments?post=886"}],"version-history":[{"count":1,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts\/886\/revisions"}],"predecessor-version":[{"id":888,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts\/886\/revisions\/888"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/media\/884"}],"wp:attachment":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/media?parent=886"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/categories?post=886"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/tags?post=886"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}