Nginx, yüksek İnternet kullanıcı trafiğine sahip büyük siteleri barındırmak için popüler web sunucularından biridir. Ayrıca hem web sunucusu hem de ters proxy yapılandırması için kullanışlı yardımcı programlardan biri olarak kabul edilir.
Ubuntu'da Nginx kurulumu ile ilgili rehberimizi okuyabilirsiniz. Burada Nginx'in en son sürümünü bir Docker konteynerinde çalıştırmaya bakacağız.
İş için hazırlanma
Talimatlarımıza göre Ubuntu tabanlı bir sunucu kurmanız, "sudo" ile komutları yürütme haklarına sahip bir kullanıcı ve bir UFW güvenlik duvarı yapılandırmanız gerekir.
Ubuntu 22.04 üzerinde Docker nasıl kurulur ve yapılandırılır.
Nginx yapılandırma dosyaları
Dosyalar için, web sayfamızı görüntülemek için klasörlerin ve yapılandırma dosyalarının depolanacağı bir ana dizin oluşturmamız gerekir.
mkdir -p serverspace
cd serverspace
Bazı dizinler oluşturalım ve içlerinde Docker'da Nginx'i çalıştıracağımız test sitemiz için yapılandırma dosyaları oluşturalım.
mkdir -p project/conf-files
mkdir -p html/files
touch project/conf-files/serverspace.ru.conf
touch project/nginx.conf
touch html/files/serverspace.html
Tüm dosyaları oluşturduktan sonra, aşağıdaki içerik listesine sahip olmalıyız:
Şimdi bunları yapılandırmaya geçelim.
Uygun bir metin düzenleyici kullanarak serverspace.ru.conf dosyasında değişiklikler yapın.
vim /serverspace/project/conf-files/serverspace.ru.conf
Kodumuzu yazalım:
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index serverspace.html;
location / {
try_files $uri $uri/ =404;
}
}
Şimdi nginx.conf dosyasının kurulumuna geçelim ve kodumuzu ekleyelim:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
}
http {
sendfile on;
tcp_nopush on;
types_hash_max_size 2048;
default_type application/octet-stream;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
html/files/serverspace.html dosyasına site başlığını ve bir satır metni belirten kodu ekleyin:
Welcome to the Test-Site from Serverspace
Nginx'i bir Docker konteynerinde çalıştırmaya geçelim.
Bir konteyner başlatma<\h2>
Konteyneri şu komutla başlatın:
docker run --name nginx-serverspace -p 80:80 -v /root/serverspace/html/files/:/usr/share/nginx/html/ -v /root/serverspace/project/nginx.conf:/etc/nginx/nginx.conf -v /root/serverspace/project/conf-files/:/etc/nginx/conf.d/ -d nginx
docker run – konteyneri başlatır;
--name nginx-serverspace – konteynerin adını belirtir;
-p 80:80 – dinleme portu;
-v /path/to/file – dosyaların çıkarılacağı ve Nginx konteynerine aktarılacağı yolu belirtir;
-d nginx – bir kapsayıcıda çalışan görüntü.
Konteyner başarıyla başlatıldıktan sonra, "docker ps" komutunu kullanarak sonucu alın ve durumu kontrol edin:
Oluşturulan sunucunun IP adresine gidin, bu da başlığımızla bir web sayfası açacaktır:
Sonuçlar
Konteyner içinde çalışırken web sunucusu imajına kopyalanan dosya ve klasörleri oluşturmayı inceledik. Sonuç olarak, basit bir web sayfasına erişebildik.
Nginx'i başlatmak ve dosyalar dizininin yolunu işaretlemek için manuel komutu kullanmak her seferinde daha fazla zaman alır. Bu nedenle, Docker'da Nginx'i başlatmak için temel ayarları belirleyen, bağlantı noktasını ve dosya yollarını belirten docker-compose.yml'yi kullanmak uygundur. Basit docker-compose up -d komutu ile Nginx imajınızı Docker'a hızlı bir şekilde dağıtabilirsiniz.