Nginx web Sunucusunu Debian 12’ye Hızla Kurun

Nginx web sunucusunu Debian 12’ye nasıl kurabilirim? Bu kılavuz, Nginx web sunucusunu Debian 12’ye kurmak için basit adımlarda size yol gösterecektir.

Nginx Web Sunucusunun Kurulumu

Debian 12’yi kurdunuz ve üzerinde bazı web uygulamaları çalıştırmak mı istiyorsunuz? İnternette en sık kullanılan HTTP sunucuları olan Apache veya Nginx’i kurabilir ve web uygulamanızı sunuculayacak şekilde yapılandırabilirsiniz.

Peki, Nginx web sunucusunu Debian 12’ye nasıl kolayca kurabiliriz? Adımlar aşağıda özetlendiği gibidir;

Sistem Güncellemesini Çalıştırın

Debian 12’de güncel paketler kurduğunuzdan emin olmak için aşağıdaki komutu çalıştırarak paket önbelleğini güncelleyin;

sudo apt update

Nginx Web Sunucusunu Kurun

Debian 12 üzerinde Nginx web sunucusu kurmak için aşağıdaki komutu yürütün;

apt install nginx

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  nginx-common
Suggested packages:
  fcgiwrap nginx-doc
The following NEW packages will be installed:
  nginx nginx-common
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 640 kB of archives.
After this operation, 1,696 kB of additional disk space will be used.
Do you want to continue? [Y/n] y

Nginx Hizmetini Başlatın

Kurulum tamamlandıktan sonra, Nginx başlatılır ve sistem önyüklemesinde çalışması etkinleştirilir.

Aşağıdaki komutu kullanarak durumu onaylayabilirsiniz;

systemctl status nginx

● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: active (running) since Wed 2023-06-14 19:08:00 EAT; 44s ago
       Docs: man:nginx(8)
    Process: 2350 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 2351 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 2377 (nginx)
      Tasks: 3 (limit: 2285)
     Memory: 2.3M
        CPU: 23ms
     CGroup: /system.slice/nginx.service
             ├─2377 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             ├─2379 "nginx: worker process"
             └─2380 "nginx: worker process"

Jun 14 19:08:00 bookworm systemd[1]: Starting nginx.service - A high performance web server and a reverse proxy server...
Jun 14 19:08:00 bookworm systemd[1]: Started nginx.service - A high performance web server and a reverse proxy server.

Başlatılmamışsa veya sistem önyüklemesinde çalışması etkinleştirilmemişse, Nginx hizmetini başlatmak için aşağıdaki komutu çalıştırın;

systemctl enable --now nginx

Nginx kurulumunu doğrulayın

Artık kurulumunu doğrulamak için tarayıcıdan Nginx’e erişmeyi deneyebilirsiniz.

http://server-IP adresini kullanabilirsiniz.

Nginx kuruluysa ve düzgün çalışıyorsa Nginx Test sayfasını görürsünüz;

Install Nginx web Server on Debian 12

Nginx ile Özel Site Oluşturma

Nginx kullanarak kendi sitenizi oluşturabilir ve sunabilirsiniz.

Varsayılan olarak, Nginx belge kök dizini olarak /var/www/html’yi kullanır. Web kök dizini olarak da bilinir ve web sunucusunun istemcilere hizmet verecek dosyaları aradığı ana dizindir.

Yani kendi sayfanıza hizmet vermek istiyorsanız uygulama dizininizi /var/www/ veya /var/www/html altında oluşturabilirsiniz.

Bu demoda, temel site html içeriğimizi koyacağımız kifarunix adlı bir dizin oluşturuyoruz.

mkdir /var/www/html/kifarunix
vim /var/www/html/kifarunix/index.html

Bizim html yapılandırmalarımız;


<!DOCTYPE html>
<html>
<head>
    <title>Welcome to Kifarunix.com</title>
    <style>
        body {
            display: flex;
            justify-content: center;
            align-items: flex-start;
            min-height: 100vh;
            text-align: center;
            font-family: Arial, sans-serif;
            margin: 0;
        }
        .container {
            max-width: 600px;
            margin-top: 20vh;
        }
        h1 {
            font-size: 28px;
            margin-bottom: 20px;
        }
        p {
            font-size: 18px;
            line-height: 1.5;
            margin-bottom: 10px;
        }
        a {
            color: #007bff;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>Welcome to Kifarunix.com</h1>
        <p>This is a sample HTML page for my website.</p>
        <p>Feel free to customize this page with your own content.</p>
        <p>For more information, visit <a href="https://www.kifarunix.com">kifarunix.com</a>.</p>
    </div>
</body>
</html>

Ardından, dizinin sahipliğini güncelleyin;

chown -R www-data: /var/www/html/kifarunix/

Nginx’i sitenize hizmet verecek şekilde yapılandırın. Benzer şekilde, site içeriğinizi yayınlamak için kendi Nginx sanal sunucu yapılandırmanızı oluşturun;


cat > /etc/nginx/sites-available/kifarunix << 'EOL'
server {
    listen 80;
    server_name kifarunix-demo.com;

    root /var/www/html/kifarunix;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    error_log /var/log/nginx/kifarunix_error.log;
    access_log /var/log/nginx/kifarunix_access.log combined;
}
EOL

Yapılandırma sözdizimi hataları için Nginx’i kontrol edin;

nginx -t

Testler tamam ise şöyle bir çıktı görmelisiniz;

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Ardından, sitenizi etkinleştirin;

ln -s /etc/nginx/sites-available/kifarunix /etc/nginx/sites-enabled/kifarunix

Varsayılan Nginx sitesini devre dışı bırakın;

unlink /etc/nginx/sites-enabled/default

Nginx hizmetini yeniden başlatın;

systemctl restart nginx

Güvenlik Duvarında Nginx HTTP Bağlantısına İzin Verme

Güvenlik duvarının arkasındaysanız, Nginx’in harici erişimine izin vermek için 80/TCP bağlantı noktasını açmanız gerekir.

UFW;

ufw allow "WWW"

IPTABLES;

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

Firewalld;

firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload

Nginx HTTP Bağlantısını Doğrulayın

Web tarayıcısından site işlemenizi doğrulayın, http://server-IP-or-resolvable-domain-name.

Install Nginx web Server on Debian 12

Nginx’i HTTPS ile yapılandırma

Nginx’te HTTPS’yi etkinleştirmek istiyorsanız, bunu nasıl yapabilirsiniz?

SSL/TLS sertifikaları oluşturun

Her şeyden önce, SSL/TLS sertifikalarını oluşturmanız gerekir.

Bu kılavuzda kendinden imzalı SSL sertifikaları kullanacağız. Ticari sertifikaları kullanma süreci bu kılavuzun kapsamı dışındadır.

Özel anahtar oluşturma

mkdir /etc/ssl/kifarunix
openssl genrsa -out /etc/ssl/kifarunix/kifarunix-private.key 4096

CSR oluşturma

openssl req -new -key /etc/ssl/kifarunix/kifarunix-private.key \
-out /etc/ssl/kifarunix/kifarunix-csr.pem \
-subj "/C=US/ST=CA/L=San Francisco/O=Organization/CN=kifarunix.com"

Ayarlar;

  • /C=: Ülke (2 harfli ISO kodu)
  • /ST=: Eyalet veya İl
  • /L=: Mahalle veya şehir
  • /O=: Organizasyon
  • /CN=: Ortak Ad (ör. alan adı)

SSL/TLS sertifikası oluşturun;

openssl x509 -req -days 3650 -in /etc/ssl/kifarunix/kifarunix-csr.pem \
-signkey kifarunix-private.key -out /etc/ssl/kifarunix/kifarunix-cert.crt

Örnek çıktı;

Certificate request self-signature ok
subject=C = US, ST = CA, L = San Francisco, O = Organization, CN = kifarunix.com

Nginx SSL Modüllerini Kurma/Etkinleştirme

Nginx SSL modülleri varsayılan olarak etkindir. Aşağıdaki komutu kullanarak onaylayın;

nginx -V 2>&1 | grep -o with-http_ssl_module
with-http_ssl_module

Nginx’i SSL/TLS sertifikalarını kullanacak şekilde yapılandırma

Şimdi yapılandırmanızı SSL/TLS kullanacak şekilde güncelleyin.

Yukarıdaki yapılandırmamızı güncelleyeceğiz. Bu yüzden sizinkini buna göre güncelleyin.

vim /etc/nginx/sites-available/kifarunix

server {
    listen 80;
    server_name kifarunix-demo.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name kifarunix-demo.com;

    ssl_certificate /etc/ssl/kifarunix/kifarunix-cert.crt;
    ssl_certificate_key /etc/ssl/kifarunix/kifarunix-private.key;

    ssl_protocols TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_dhparam /etc/nginx/dhparam.pem;
    ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
    ssl_ecdh_curve secp384r1;
    ssl_session_timeout 10m;
    ssl_session_cache shared:SSL:10m;
    ssl_session_tickets off;
    ssl_stapling_verify on;
    resolver_timeout 5s;
    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";

    root /var/www/html/kifarunix;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    error_log /var/log/nginx/kifarunix_error.log;
    access_log /var/log/nginx/kifarunix_access.log combined;
}

Dosyayı kaydedin ve çıkın.

SSL ayarları, burada sağlanan güçlü şifrelere dayanmaktadır. Onları size uyacak şekilde özelleştirin.

Yapılandırmamızda görebileceğiniz gibi, DH parametrelerini kullanıyoruz (ssl_dhparam /etc/nginx/dhparam.pem);

Bu yüzden aşağıdaki komutu kullanarak bunları oluşturmamız gerekiyor;

openssl dhparam -out /etc/nginx/dhparam.pem 4096

Herhangi bir hata için Nginx’i kontrol edin;

nginx -t

hata yoksa yeniden başlatın;

systemctl restart nginx

Nginx HTTPS Bağlantı Noktasını Güvenlik Duvarında Ayarlama

Güvenlik duvarının arkasındaysanız, Nginx’in harici erişimine izin vermek için 443/TCP bağlantı noktasını açmanız gerekir.

UFW;

ufw allow "WWW Secure"

Veya;

ufw allow 443/tcp

IPTABLES;

iptables -I INPUT -p tcp --dport 443 -j ACCEPT

Firewalld;

firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --reload

Nginx HTTPS Bağlantısını Doğrulama

https://domain-name.com adresini ziyaret ederek artık sitenize HTTPS aracılığıyla erişebildiğinizi doğrulayın.

Install Nginx web Server on Debian 12

Yazının orijinalini buradan okuyabilirsiniz.