Nginx Alan Adı Tanımlama
DigitalOcean üzerinde oluşturduğumuz Ubuntu sunucuda Nginx ve Grav kurulumlarını gerçekleştirdik.
Bu yazıda ise, daha önce bahsettiğim Nginx yapısı ve .conf işlemlerini detaylandıracak ve sahip olduğumuz domain (alan adı) tanımlamalarını gerçekleştireceğiz.
Tanımlama işlemlerini hem tek kurulum (Grav, WordPress MU, vb.) üzerinden cevap verecek alan adı hem de çoklu site kullanımında her alan adı ile başka bir alt sitenin görüntülenmesi üzerine gerçekleştireceğiz.
DigitalOcean üzerinden gerçekleştirilen temel kurulum sürecinin ardından eğer aksi belirtilmemişse yayın /var/www/html/
yolu üzerinden gerçekleştirilecektir.
Tek Alan Adı İle Erişim
Dosyalarınızı doğrudan /var/www/html/
içeriğinden sunabileceğiniz gibi bir alt klasör daha oluşturabilirsiniz. Örneğin Nginx ve Grav kurulumu ile ilgili yazımda grav
adında bir klasör oluşturmuş /var/www/html/grav/
ve site yayınını bu klasör üzerinden gerçekleştirmiştik. Benzer bir tercihte bulunabilirsiniz. Önemli olan /etc/nginx/sites-available/
ve /etc/nginx/sites-enabled/
yapılarını doğru bir şekilde gerçekleştirmek olduğu için yapılandırma işlemlerini baştan planlamak uygun olacaktır.
Temel Bilgiler
sites-available
içeriğine göz attığımızda default
ve digitalocean yapılandırmalarını göreceğiz. default
her yapılandırma için ön tanımlandırmaların tutulduğu dosyamız. digitalocean ise default üzerinden oluşturulmuş ve kullanımda olan ayarları barındırmakta. digitalocean dosyasını silebilir ya da içeriğini ihtiyaçlarınıza uygun şekilde değiştirerek kullanabilirsiniz. Bu düzenlemeler için aşağıdaki yönergeleri takip edebilirsiniz.
# digitalocean dosyası ve linkini siliyorum
rm /etc/nginx/sites-available/digitalocean
rm /etc/nginx/sites-enabled/digitalocean
Alan adı tanımlama1 işleminde default
altındaki server_name
, klasör değişikliklerinde ise root /var/www/html
değerinin değiştirilmesi gerekmektedir. Örnek olarak ornekwebsitesi.com
için işlemlerimizi alt klasör (ornekwebsitesi, ornekwebsitesi.com ya da istediğimiz başka bir isim ile oluşturabiliriz) oluşturarak yapalım. İşlemleri root olarak da devam ettirebilirsiniz.
cd /var/www/html
mkdir /var/www/html/ornekwebsitesi.com
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
}
Domain Tanımlama
cp /etc/nginx/sites-available/default /etc/nginx/sites-available/ornekwebsitesi.com
nano /etc/nginx/sites-available/ornekwebsitesi.com
server {
listen 80;
root /var/www/html/ornekwebsitesi.com;
index index.php index.html index.htm;
server_name ornekwebsitesi.com;
access_log /var/log/nginx/ornekwebsitesi.com.access.log;
error_log /var/log/nginx/ornekwebsitesi.com.error.log;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
ln -s /etc/nginx/sites-available/ornekwebsitesi.com /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx
Kullanıcı Üzerinden Domain Tanımlama
Peki işlemleri oluşturduğunuz bir kullanıcı üzerinden devam ettirmek isterseniz?
adduser newuser
su - newuser
mkdir www;cd www;mkdir html;cd html;mkdir ornekwebsitesi.com # /home/newuser/www/html/ornekwebsitesi.com
exit
Oluşturacağım kullanıcı adının newuser
olmasını istiyorum. Evet, şifre tanımlama işlemlerimin ardından newuser
adlı kullanıcı hesabımı oluşturmuş olacağım. exit ile tekrar root
olarak devam edeceğiz.
cp /etc/nginx/sites-available/default /etc/nginx/sites-available/ornekwebsitesi.com
nano /etc/nginx/sites-available/ornekwebsitesi.com
server {
listen 80;
root /home/newuser/www/html/ornekwebsitesi.com;
index index.php index.html index.htm;
server_name ornekwebsitesi.com;
access_log /var/log/nginx/ornekwebsitesi.com.access.log;
error_log /var/log/nginx/ornekwebsitesi.com.error.log;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
ln -s /etc/nginx/sites-available/ornekwebsitesi.com /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx
Çoklu Domain İle Erişim
WPMU üzerinden bu konuyu açıklayacağım2. Grav yazısında bahsettiğim subdirectory
ve subdomain
ile ilişkili olarak şöyle bir senaryo oluşturalım.
- Site 1:
ornekwebsitesi.com
(ana alan adımız), WordPress ve Grav kurulumlarımız bu domain ile ilişkili olan klasör içerisinde barınıyor. - Site 2:
site2.net
, Subdomain:site2.ornekwebsitesi.com
, Subdirectory:ornekwebsitesi.com/site2
- Site 3:
site3.org
, Subdomain:site3.ornekwebsitesi.com
, Subdirectory:ornekwebsitesi.com/site3
Elbette site sayısı ihtiyaçlarınıza göre artabilir. DNS yapılandırmalarınızı (A record) gerçekleştirdiğinizi varsayıyorum.

Yukarıdaki düzenlemelerin ardından WordPress örneğindeki çoklu kullanım aktivasyonunu da yapmanız gerekmekte3. Define tanımlama sürecinde DOMAIN_CURRENT_SITE
değerini ornekwebsitesi.com
olarak düzenlemeyi unutmamalısınız4.
define('DOMAIN_CURRENT_SITE', 'ornekwebsitesi.com');
Bu işlemler ardından ise domain yönetimi için kullanacağınız nginx düzenlemesi şu şekilde olacaktır5.
server {
listen [::]:80;
root /var/www/html/wordpress;
index index.php index.html index.htm;
server_name ornekwebsitesi.com *.alandi.com site2.net site3.org;
access_log /var/log/nginx/ornekwebsitesi.com.access.log;
error_log /var/log/nginx/ornekwebsitesi.com.error.log;
location / {
try_files $uri $uri/ /index.php?$args;
# try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Temel işlemleri bu şekilde özetleyebiliriz. Süreç içerisinde karşılaştığınız problemler ya da ek ihtiyaçlar olursa yorum olarak iletebilirsiniz.
- Jakub Neander. (2013). Serving Apps Locally with Nginx and Pretty Domains ↩
- Jesin A. (2014). How To Set Up WordPress Multisite with Nginx on Ubuntu 14.04. DigitalOcean Community ↩
- Etel Sverdlov. (2020). How To Create a New User and Grant Permissions in MySQL. DigitalOcean Community ↩
- Vivek Gite. (2018). How to configure Nginx for WordPress permalinks. nixCraft ↩
- Nginx. WordPress Support ↩