Nginx kurulu sunucumuzda bazı nedenlerle bir dizini / klasörü yalnızca bize ait kullanıcı adı ve şifre ile erişilebilecek şekilde şifrelemek isteyebiliriz. Cliaweb den vps, vds alan müşteriler genellikle Vesta CP ücretsiz web panel kullandıklarından bu makalemizi de VestaCP de NGINX üzerinde nasıl bir sitenin dizinini şifreleyebileceğimize yönelik olarak anlatacağız.
Bu makalede yer alan nginx dizin şifreleme işlemini tüm Nginx kurulu VPS veya VDS sunucu paketlerinde gerçekleştirebilirsiniz.
Linux sunucumuzun SSH ına bağlanıyoruz ve aşağıdaki komutu yürütüyoruz ;
1 |
openssl passwd |
Buradaki amaç şifreleyeceğimiz dizin için kullanacağımız şifreye ait hash oluşturmaktır. Aşağıdaki gibi Password: kısmına unutmayacağınız bir şifre yazın ve enterlayın, size karşılığında o şifreye ait hash kodu verecek ;
Şimdi sıra bu hash kodu ve bir kullanıcı adı ile yetkilendirme dosyası oluşturmaya geldi. Buna auth_basic_user_file deniyor. Bu dosyayı herhangi bir dizin altında oluşturabilirsiniz biz örneğin aşağıdaki gibi nano ile boş bir dosya açıyoruz ;
1 |
nano -w /etc/nginx/cliawebcom_sifre |
Ve içerisine şifremize karşılık oluşan hash kodunu admin kullanıcı adı ile ekliyoruz, kaydedip çıkıyoruz. Buradaki admin kullanıcı adını siz farklı bir ad yapabilirsiniz ;
1 |
admin:VUj2xhni7xGt. |
Ön hazırlığı tamamladık, şimdi sıra nginx dizin şifreleme kodunu nginx.conf dosyamıza eklemeye geldi. Burada önemli olan faktör nginx.conf dosyası eğer her bir domain için ayrı ayrı tutuluyor ise o domaine ait nginx.conf u bulmak olacaktır.
Örneğin VestaCP panelde domainlere ait nginx ayar dosyasını şu şekilde listeleyebiliriz ssh üzerinden ;
1 2 |
cd /home/admin/conf/web ll |
Yukarıdaki komut ile domainlere ait nginx dosyalarını göreceğiz. Burada biz örnek şifrelemeyi cliaweb.com domaini için cliaweb.com.nginx.conf dosyasında yapacağız. Nano ile açıyoruz ;
1 |
nano -w cliaweb.com.nginx.conf |
server { kısmının hemen sonuna dizin şifreleme kodumuzu ekliyoruz. Örneğin cliaweb.com/sifrelidizin kısmını aşağıdaki kod ile şifreleyeceğiz. auth_basic_user_file yolunu ise hash eklediğimiz dosya yolu ile güncellemeyi unutmuyoruz ;
1 2 3 4 |
location /sifrelidizin { auth_basic "Restricted"; auth_basic_user_file /etc/nginx/cliawebcom_sifre; } |
Yukarıdaki örnek standart şifrelemeyi içerir. Alt dosyaları kapsamaz. Eğer alt dosyalarıda kapsamasını istiyor iseniz aşağıdaki gibi bir nginx kuralı girebilirsiniz (Bu kod Vesta CP nginx yapısı ile uyumludur) ;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
location /sifrelidizin { auth_basic "Restricted"; auth_basic_user_file /etc/nginx/cliawebcom_sifre; location ~ [^/]\.php(/|$) { fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; if (!-f $document_root$fastcgi_script_name) { return 404; } fastcgi_pass 127.0.0.1:9001; fastcgi_index index.php; include /etc/nginx/fastcgi_params; } } |
Ardından nginx i yeniden başlatıyoruz ;
1 |
service nginx restart |
http://siteismi.com/sifrelidizin şeklinde sitemize eriştiğimizde aşağıdaki gibi dizin koruma ekranı gelecektir, kullanıcı adı ve şifremiz ile giriş yapabiliriz ;
İşlemler bu kadar.