SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
Nginx
10060316 Nazan Poşul
10060289 Mert Akkaya
Nginx Nedir ?
• Özgür, açık kaynaklı bir Http, ters proxy ve Imap/Pop3 sunucu
• 2002 yılında Igor Sysoev tarafından geliştirilmeye başlanmış, 2004
yılında yayımlanmış
• Kaynak kodu 2-clause BSD-like lisansı ile lisanslı
• Günümüzde alan adları etrafında %12.18’e kadar yaygınlaşmış
Alternatifleri Neler?
Başlıca alternatifleri:
1. Apache
2. Lighttpd
3. LiteSpeed
4. Zeus
5. Cherokee
Avantajları...
➢ C10k (concurrent 10k) problemini hedef alan bir sunucu. Geleneksel
yapıdaki gibi sunucuya gelen talepleri “thread”ler aracılığı ile yakalamak
yerine, asenkron bir yapı kullanıyor.
➢ Bu sayede yüksek trafikli web siteleri için ölçeklenebilir ve daha düşük
hafıza imkanı sunuyor
➢ Konfigürasyonu kolay, güvenli, stabil
• Nginx; Wordpress, Gravatar, Github, Hulu, SourceForge, HaberTürk,
Heroku gibi yüksek performans isteyen sitelerde kullanılmaktadır.
Nginx’in Mimarisi
Proxy ve Ters Proxy Nedir?
Proxy (vekil sunucu), bir client’ın bazı sebeplerden ötürü sunucuyla dolaylı
yoldan iletişim kurmasına yarayan sunucudur. Client bu proxy sunucusunu
farkında olarak kullanır.
Ters Proxy ise bu durumun sunucu tarafından yapılmasıdır. Yine bazı
sebeplerden ötürü sunucu bu client’ın kendisine doğrudan erişimini
istemez. Bu durumda bir veri yönlendirmesi ile ters proxy yapar. Client’
ın bu durumdan haberi olmaz.
Neden Ters Proxy?
• Trafiği yoğun bir web sitesinin yükünü, tek bir sunucu kaldıramıyor
olabilir. Bu durumda lokasyona göre bir sunucu yönlendirmesi kurularak
ters proxy yapılabilir. (bkz. Load-Balance) (bkz. CDN)
• Site hassas içeriğe sahiptir ve site yöneticileri siteyi doğrudan kamuya
açmak istemiyor olabilir.
HTTP TCP
Apache (mod-proxy)
HAProxy
squid
LVS
lighttp
balance
delegate
pen
pure load balacer
python director
Alternatif Ters Proxy Yazılımları
Desteklediği Platformlar
• Linux 2.2 — 2.6 / i386; Linux 2.6 / amd64
• FreeBSD 3 — 8 / i386; FreeBSD 5 — 8 / amd64
• Solaris 9 / i386, sun4u; Solaris 10 / i386, amd64, sun4v
• MacOS X / ppc, i386
• Windows XP, Windows Server 2003
Nginx Kurulumu
➔ Kurmak için;
sudo apt-get install nginx
➔ Versiyonu öğrenmek için;
nginx -v
➔ Sunucunun doğru şekilde yüklendiğini öğrenmek için;
ps aux | grep nginx
Nginx Kurulumu
Başarılı nginx kurulumu sonrası localhost.
Nginx Kullanımı
➔ Başlatmak için;
sudo service nginx start
➔ Yeniden başlatmak için;
sudo service nginx restart
➔ Sonlandırmak için;
sudo service nginx stop
➔ Konfigürasyonun testi için;
sudo service nginx configtest
Yapılandırma
❖ Nginx, Unix dizin yapısının altına yerleşiyor.
➢ Yapılandırma dosyaları /etc/nginx dizini altında. (*.conf)
❖ Web sunucu kökü varsayılan olarak /usr/share/nginx/html ayarlı
➢ Varsayılan dizin, nginx versiyonu, yükleme şekli, işletim sistemine
göre değişebiliyor
➢ Buradaki index.html’i düzenleyerek site indeksini ayarlayabiliyoruz.
➢ Root aynı zamanda HttpCoreModule’nin bir değişkeni.
■ /etc/nginx/nginx.conf dosyasının içindeki server bloğuna
root /home/foo/bar komutunu vermek yeterli.
VirtualHost in Nginx
❖ /etc/hosts dosyasında tanımlı hostlar var.
➢ Buraya IP adresi ve domain’i ekliyoruz.
❖ /etc/nginx/sites-enabled/ dizini altına domain adına göre bir dizin
yapısı oluşturmamız yönetilebilirlik açısından faydalı
❖ VirtualHost (SanalKonak) bir Apache terimidir. Nginx bu işi server
bloklarıyla yapıyor.
VirtualHost in Nginx
➢ Örnek yapı:
http {
index index.html;
server {
server_name www.orneksanaldomain.com;
access_log logs/orneksanaldomain.access.log main;
root /var/www/orneksanaldomain.com/htdocs;
}
Temel Yapılandırma Ayarları
❖ /etc/nginx/nginx.conf dosyası içinde;
➢ user www-data: Sunucu ne çalıştıracağına karar verir.
➢ worker_process: Nginx in kaç tane eş zamanlı işlem kullanacağını
tanımlar.
➢ pid /var/run/nginx.pid: Program tanımlamalarının(pid) depolandığı
yerin yolunu gösterir.
Temel Yapılandırma Blokları
❖ Nginx yapılandırma dosyası bloklar içerir ve bu blokları yönetir.
➢ ‘events’ bloğu:
○ Nginx bağlantıları nasıl işleyeceğini denetleyen özel bir
konumdur.
➢ ‘http’ bloğu:
○ Yapılandırma dosyasında ana hiyerarşinin başladığı bloktur.
Genel yapılandırma burada yapılır.
○ Server ve location bloklarının temel yapılandırma dosyası dışında
alacağı özel site ve url eşleşme lokasyonları buradadır.
Temel Yapılandırma Blokları
➢ ‘server’ bloğu:
○ Nginx, sanal barındırma işlevlerini gerçekleştirmek için sunucu
blokları kullanır.
○ server_name gelen bir talep için hangi server bloğunun
kullanılacağını belirler.
○ Her satır semi-colon (;) ile ayrılır.
➢ ‘location’ bloğu:
○ Sunucu dahilinde nasıl kesin kaynak isteği işlendiğini belirler.
SSL Nedir?
➔ Netscape tarafından, 1994 yılında, güvenli iletişim için tasarlandı.
➔ Secure Sockets Layer
➔ Adres çubuğunun başındaki asma kilit simgesi
➔ Güvenlik amacıyla
◆ e posta gönderilerinde,
◆ Ftp transferlerinde,
◆ alışveriş sitelerinde kullanılıyor.
➔ Nginx’te ilgili modül: ngx_http_ssl_module
➔ --with-http_ssl_module ile yüklenmesi gerekli
◆ OpenSSL kütüphanesi de gerekli
◆ Sunucu sertifikası herkese açık, Özel anahtar ise gizli ve erişimi kapalı
● Özel anahtar aynı zamanda nginx tarafından okunabilir olmalı
SSL Yapılandırması
❖ Bu yapılandırmada tarayıcı talep edilen sunucuya bakmaksızın varsayılan
sunucunun sertifikasını alır ve bu sertifikayı önerir.
➢ Örnek Yapı:
server {
listen 443;
server_name www.ornekdomain.com;
ssl on;
ssl_certificate www.ornekdomain.com.crt;
ssl_certificate_key www.ornekdomain.com.key;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers HIGH:!ADH:!MD5;
...
}
Basic Auth Nedir?
➔ Kullanıcı adı ve parola eşleşmesine dayanan bir güvenlik önlemi
➔ Http Basic Authentication bazlı
➔ Sitenin tümünü ya da bir bölümünü sınırlayabiliyoruz
➔ Nginx’te ilgili modül: HttpAuthBasicModule
Basic Auth Yapılandırması
❖ HttpAuthBasicModule
➢ auth_basic, auth_basic_user_file komutları var.
➢ http, server, location, limit_except bağlamları içerisinde
kullanılırlar.
➢ auth_basic öntanımlı olarak ‘off’
➢ Örnek Yapı:
location / {
auth_basic "Restricted";
auth_basic_user_file htpasswd;
}
URL Yönlendirmesi
• URL yönlendirmesi için HttpRewriteModule’yi kullanıyoruz.
• Söz dizimi: rewrite regex replacement [flag] şeklinde
• Daha kapsamlı kullanım için nginx dokümantasyonuna bakın ve unutmayın
IfIsEvil
server {
server_name .ornekdomain.org;
rewrite ^ http://ornekdomain.com$request_uri? permanent;
# ^ satır başını, $ ise satır sonunu ifade ediyor #
#permanent bayrağı ise 301 koduyla beraber dönüyor#
#$request_uri? ise “.com/”tan sonrasını kopyalamak için#
}
Ters Proxy Yapılandırması
• Her şey için bir modül var: HttpProxyModule
location / {
#Yönlendirmeyi belirtiyoruz
proxy_redirect http://www.ornekdomain.com:81 http://www.ornekdomain.com;
proxy_redirect http://ornekdomain.com:81 http://ornekdomain.com;
#Proxy’lenmiş sunucunun adresini ayarlıyoruz
proxy_pass http://localhost:8080;
#Proxy’lenmiş sunucuya gidecek birkaç “request header” tanımlıyoruz
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Son
Teşekkürler!
Kaynakça
1. Nginx Doc
2. Nginx wiki
3. A Tale of 3 Computers - Proxy vs Reverse Proxy
4. Nginx Conf for Apache
5. http://www.aosabook.org/en/nginx.html
6. SSL wiki
7. SSL Conf
Ekstra
• Nginx’in .conf uzantılı dosyaları için vim eklentisi
• Nginx PCRE (Pearl Compatible Regular Expressions) kullanıyor.
• Vagrant’a kurulum için Vagrantfile’deki port yönlendirmesi
• config.vm.network :forwarded_port, guest: 80, host: 8080
• Apache araçlarını kullanmadan .htpasswd dosyasını ayarlamak için:
Nginx FAQ
• İşlemci sayısı için: cat /proc/cpuinfo | grep processor

Contenu connexe

Tendances

Tendances (20)

Curl
CurlCurl
Curl
 
Varnish
VarnishVarnish
Varnish
 
OpenBSD PAcket Filter DDoS Koruma Özellikleri
OpenBSD PAcket Filter DDoS Koruma ÖzellikleriOpenBSD PAcket Filter DDoS Koruma Özellikleri
OpenBSD PAcket Filter DDoS Koruma Özellikleri
 
Node.js'e Hızlı Bir Bakış
Node.js'e Hızlı Bir BakışNode.js'e Hızlı Bir Bakış
Node.js'e Hızlı Bir Bakış
 
Sızma Testi ve Güvenlik Denetlemeleri - Temel Linux Bilgisi
Sızma Testi ve Güvenlik Denetlemeleri - Temel Linux BilgisiSızma Testi ve Güvenlik Denetlemeleri - Temel Linux Bilgisi
Sızma Testi ve Güvenlik Denetlemeleri - Temel Linux Bilgisi
 
DDoS Engelleme Ürünleri
DDoS Engelleme ÜrünleriDDoS Engelleme Ürünleri
DDoS Engelleme Ürünleri
 
Windows Server 2012 Server Core Active Directory
Windows Server 2012 Server Core Active DirectoryWindows Server 2012 Server Core Active Directory
Windows Server 2012 Server Core Active Directory
 
Unix Denetim Dokümanı
Unix Denetim DokümanıUnix Denetim Dokümanı
Unix Denetim Dokümanı
 
11 g RAC -ASM
11 g RAC -ASM11 g RAC -ASM
11 g RAC -ASM
 
Vagrant 101
Vagrant 101Vagrant 101
Vagrant 101
 
Exchange Server 2010 Database Availability Group(DAG)
Exchange Server 2010 Database Availability Group(DAG)Exchange Server 2010 Database Availability Group(DAG)
Exchange Server 2010 Database Availability Group(DAG)
 
Web Uygulama Güven(siz)liği
Web Uygulama Güven(siz)liğiWeb Uygulama Güven(siz)liği
Web Uygulama Güven(siz)liği
 
PHPKonf'15 PHP Uygulamalarını Docker ile Çalıştırmak
PHPKonf'15 PHP Uygulamalarını Docker ile ÇalıştırmakPHPKonf'15 PHP Uygulamalarını Docker ile Çalıştırmak
PHPKonf'15 PHP Uygulamalarını Docker ile Çalıştırmak
 
Windows Server 2012 Developer Preview Server Core
Windows Server 2012 Developer Preview Server CoreWindows Server 2012 Developer Preview Server Core
Windows Server 2012 Developer Preview Server Core
 
Microsoft Hyper V Server 2008 Sunucu Sanallaştırma
Microsoft Hyper V Server 2008 Sunucu SanallaştırmaMicrosoft Hyper V Server 2008 Sunucu Sanallaştırma
Microsoft Hyper V Server 2008 Sunucu Sanallaştırma
 
Client-Side Security & csp - Mehmet İnce #SiberGuvenlikKonferansi 14.05.14
Client-Side Security & csp - Mehmet İnce #SiberGuvenlikKonferansi 14.05.14Client-Side Security & csp - Mehmet İnce #SiberGuvenlikKonferansi 14.05.14
Client-Side Security & csp - Mehmet İnce #SiberGuvenlikKonferansi 14.05.14
 
PostgreSQL DBA Neler Yapar?
PostgreSQL DBA Neler Yapar?PostgreSQL DBA Neler Yapar?
PostgreSQL DBA Neler Yapar?
 
PostgreSQL'i öğrenmek ve yönetmek
PostgreSQL'i öğrenmek ve yönetmekPostgreSQL'i öğrenmek ve yönetmek
PostgreSQL'i öğrenmek ve yönetmek
 
Windows Hacking 2
Windows Hacking 2Windows Hacking 2
Windows Hacking 2
 
Chroot içinde {DNS, NTP, Nginx, PHP-FPM}
Chroot içinde {DNS, NTP, Nginx, PHP-FPM}Chroot içinde {DNS, NTP, Nginx, PHP-FPM}
Chroot içinde {DNS, NTP, Nginx, PHP-FPM}
 

Similaire à Nginx sunu 2014

Apache Htaccess Güvenlik Testleri
Apache Htaccess Güvenlik TestleriApache Htaccess Güvenlik Testleri
Apache Htaccess Güvenlik Testleri
BGA Cyber Security
 
SSH Tünelleme ile İçerik Filtreleyicileri Atlatmak
SSH Tünelleme ile İçerik Filtreleyicileri AtlatmakSSH Tünelleme ile İçerik Filtreleyicileri Atlatmak
SSH Tünelleme ile İçerik Filtreleyicileri Atlatmak
BGA Cyber Security
 
windows server 2008 r2 hyper-v fail over cluster
windows server 2008 r2 hyper-v fail over clusterwindows server 2008 r2 hyper-v fail over cluster
windows server 2008 r2 hyper-v fail over cluster
ÇözümPARK
 
Windows Server 2012 Network ve Dosya Sistemi Yenilikleri
Windows Server 2012 Network ve Dosya Sistemi YenilikleriWindows Server 2012 Network ve Dosya Sistemi Yenilikleri
Windows Server 2012 Network ve Dosya Sistemi Yenilikleri
MSHOWTO Bilisim Toplulugu
 

Similaire à Nginx sunu 2014 (20)

2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
 
Az 103 : Microsoft Azure Administrator - Bolum 3
Az 103 : Microsoft Azure Administrator - Bolum 3Az 103 : Microsoft Azure Administrator - Bolum 3
Az 103 : Microsoft Azure Administrator - Bolum 3
 
Node js giriş (intro)
Node js giriş (intro)Node js giriş (intro)
Node js giriş (intro)
 
Apache Htaccess Güvenlik Testleri
Apache Htaccess Güvenlik TestleriApache Htaccess Güvenlik Testleri
Apache Htaccess Güvenlik Testleri
 
Java Web Uygulama Geliştirme
Java Web Uygulama GeliştirmeJava Web Uygulama Geliştirme
Java Web Uygulama Geliştirme
 
Docker Nedir, Ne İşe Yarar, Nasıl Kullanılmalıdır?
Docker Nedir, Ne İşe Yarar, Nasıl Kullanılmalıdır? Docker Nedir, Ne İşe Yarar, Nasıl Kullanılmalıdır?
Docker Nedir, Ne İşe Yarar, Nasıl Kullanılmalıdır?
 
Modern Frontend
Modern FrontendModern Frontend
Modern Frontend
 
WordPress ile buyuk olcekli siteler
WordPress ile buyuk olcekli sitelerWordPress ile buyuk olcekli siteler
WordPress ile buyuk olcekli siteler
 
SSH Tünelleme ile İçerik Filtreleyicileri Atlatmak
SSH Tünelleme ile İçerik Filtreleyicileri AtlatmakSSH Tünelleme ile İçerik Filtreleyicileri Atlatmak
SSH Tünelleme ile İçerik Filtreleyicileri Atlatmak
 
vSphere Integrated Containers
vSphere Integrated ContainersvSphere Integrated Containers
vSphere Integrated Containers
 
windows server 2008 r2 hyper-v fail over cluster
windows server 2008 r2 hyper-v fail over clusterwindows server 2008 r2 hyper-v fail over cluster
windows server 2008 r2 hyper-v fail over cluster
 
Windows Server 2012 Network ve File System Yenilikleri
Windows Server 2012 Network ve File System YenilikleriWindows Server 2012 Network ve File System Yenilikleri
Windows Server 2012 Network ve File System Yenilikleri
 
Windows Server 2012 Network ve Dosya Sistemi Yenilikleri
Windows Server 2012 Network ve Dosya Sistemi YenilikleriWindows Server 2012 Network ve Dosya Sistemi Yenilikleri
Windows Server 2012 Network ve Dosya Sistemi Yenilikleri
 
pfSense 2.0 Eğitim Sunumu
pfSense 2.0 Eğitim SunumupfSense 2.0 Eğitim Sunumu
pfSense 2.0 Eğitim Sunumu
 
ASP.NET MVC'den ASP.NET Core'a Geçiş
ASP.NET MVC'den ASP.NET Core'a GeçişASP.NET MVC'den ASP.NET Core'a Geçiş
ASP.NET MVC'den ASP.NET Core'a Geçiş
 
.Net ile yazılım güvenliği
.Net ile yazılım güvenliği.Net ile yazılım güvenliği
.Net ile yazılım güvenliği
 
Microsoft Azure ITPro - Microsoft Azure Sanal Ağlar - Bölüm 2
Microsoft Azure ITPro - Microsoft Azure Sanal Ağlar - Bölüm 2Microsoft Azure ITPro - Microsoft Azure Sanal Ağlar - Bölüm 2
Microsoft Azure ITPro - Microsoft Azure Sanal Ağlar - Bölüm 2
 
Docker - Ankara Cloud Meetup
Docker - Ankara Cloud Meetup Docker - Ankara Cloud Meetup
Docker - Ankara Cloud Meetup
 
Web Uygulama Güvenliği Ve Güvenli Kod Geliştirme Eğitim Notlarım
Web Uygulama Güvenliği Ve Güvenli Kod Geliştirme Eğitim NotlarımWeb Uygulama Güvenliği Ve Güvenli Kod Geliştirme Eğitim Notlarım
Web Uygulama Güvenliği Ve Güvenli Kod Geliştirme Eğitim Notlarım
 
Azure Sanal Makineler
Azure Sanal MakinelerAzure Sanal Makineler
Azure Sanal Makineler
 

Nginx sunu 2014

  • 2. Nginx Nedir ? • Özgür, açık kaynaklı bir Http, ters proxy ve Imap/Pop3 sunucu • 2002 yılında Igor Sysoev tarafından geliştirilmeye başlanmış, 2004 yılında yayımlanmış • Kaynak kodu 2-clause BSD-like lisansı ile lisanslı • Günümüzde alan adları etrafında %12.18’e kadar yaygınlaşmış
  • 3. Alternatifleri Neler? Başlıca alternatifleri: 1. Apache 2. Lighttpd 3. LiteSpeed 4. Zeus 5. Cherokee
  • 4. Avantajları... ➢ C10k (concurrent 10k) problemini hedef alan bir sunucu. Geleneksel yapıdaki gibi sunucuya gelen talepleri “thread”ler aracılığı ile yakalamak yerine, asenkron bir yapı kullanıyor. ➢ Bu sayede yüksek trafikli web siteleri için ölçeklenebilir ve daha düşük hafıza imkanı sunuyor ➢ Konfigürasyonu kolay, güvenli, stabil • Nginx; Wordpress, Gravatar, Github, Hulu, SourceForge, HaberTürk, Heroku gibi yüksek performans isteyen sitelerde kullanılmaktadır.
  • 5.
  • 7. Proxy ve Ters Proxy Nedir? Proxy (vekil sunucu), bir client’ın bazı sebeplerden ötürü sunucuyla dolaylı yoldan iletişim kurmasına yarayan sunucudur. Client bu proxy sunucusunu farkında olarak kullanır. Ters Proxy ise bu durumun sunucu tarafından yapılmasıdır. Yine bazı sebeplerden ötürü sunucu bu client’ın kendisine doğrudan erişimini istemez. Bu durumda bir veri yönlendirmesi ile ters proxy yapar. Client’ ın bu durumdan haberi olmaz.
  • 8. Neden Ters Proxy? • Trafiği yoğun bir web sitesinin yükünü, tek bir sunucu kaldıramıyor olabilir. Bu durumda lokasyona göre bir sunucu yönlendirmesi kurularak ters proxy yapılabilir. (bkz. Load-Balance) (bkz. CDN) • Site hassas içeriğe sahiptir ve site yöneticileri siteyi doğrudan kamuya açmak istemiyor olabilir. HTTP TCP Apache (mod-proxy) HAProxy squid LVS lighttp balance delegate pen pure load balacer python director Alternatif Ters Proxy Yazılımları
  • 9. Desteklediği Platformlar • Linux 2.2 — 2.6 / i386; Linux 2.6 / amd64 • FreeBSD 3 — 8 / i386; FreeBSD 5 — 8 / amd64 • Solaris 9 / i386, sun4u; Solaris 10 / i386, amd64, sun4v • MacOS X / ppc, i386 • Windows XP, Windows Server 2003
  • 10. Nginx Kurulumu ➔ Kurmak için; sudo apt-get install nginx ➔ Versiyonu öğrenmek için; nginx -v ➔ Sunucunun doğru şekilde yüklendiğini öğrenmek için; ps aux | grep nginx
  • 11. Nginx Kurulumu Başarılı nginx kurulumu sonrası localhost.
  • 12. Nginx Kullanımı ➔ Başlatmak için; sudo service nginx start ➔ Yeniden başlatmak için; sudo service nginx restart ➔ Sonlandırmak için; sudo service nginx stop ➔ Konfigürasyonun testi için; sudo service nginx configtest
  • 13. Yapılandırma ❖ Nginx, Unix dizin yapısının altına yerleşiyor. ➢ Yapılandırma dosyaları /etc/nginx dizini altında. (*.conf) ❖ Web sunucu kökü varsayılan olarak /usr/share/nginx/html ayarlı ➢ Varsayılan dizin, nginx versiyonu, yükleme şekli, işletim sistemine göre değişebiliyor ➢ Buradaki index.html’i düzenleyerek site indeksini ayarlayabiliyoruz. ➢ Root aynı zamanda HttpCoreModule’nin bir değişkeni. ■ /etc/nginx/nginx.conf dosyasının içindeki server bloğuna root /home/foo/bar komutunu vermek yeterli.
  • 14. VirtualHost in Nginx ❖ /etc/hosts dosyasında tanımlı hostlar var. ➢ Buraya IP adresi ve domain’i ekliyoruz. ❖ /etc/nginx/sites-enabled/ dizini altına domain adına göre bir dizin yapısı oluşturmamız yönetilebilirlik açısından faydalı ❖ VirtualHost (SanalKonak) bir Apache terimidir. Nginx bu işi server bloklarıyla yapıyor.
  • 15. VirtualHost in Nginx ➢ Örnek yapı: http { index index.html; server { server_name www.orneksanaldomain.com; access_log logs/orneksanaldomain.access.log main; root /var/www/orneksanaldomain.com/htdocs; }
  • 16. Temel Yapılandırma Ayarları ❖ /etc/nginx/nginx.conf dosyası içinde; ➢ user www-data: Sunucu ne çalıştıracağına karar verir. ➢ worker_process: Nginx in kaç tane eş zamanlı işlem kullanacağını tanımlar. ➢ pid /var/run/nginx.pid: Program tanımlamalarının(pid) depolandığı yerin yolunu gösterir.
  • 17. Temel Yapılandırma Blokları ❖ Nginx yapılandırma dosyası bloklar içerir ve bu blokları yönetir. ➢ ‘events’ bloğu: ○ Nginx bağlantıları nasıl işleyeceğini denetleyen özel bir konumdur. ➢ ‘http’ bloğu: ○ Yapılandırma dosyasında ana hiyerarşinin başladığı bloktur. Genel yapılandırma burada yapılır. ○ Server ve location bloklarının temel yapılandırma dosyası dışında alacağı özel site ve url eşleşme lokasyonları buradadır.
  • 18. Temel Yapılandırma Blokları ➢ ‘server’ bloğu: ○ Nginx, sanal barındırma işlevlerini gerçekleştirmek için sunucu blokları kullanır. ○ server_name gelen bir talep için hangi server bloğunun kullanılacağını belirler. ○ Her satır semi-colon (;) ile ayrılır. ➢ ‘location’ bloğu: ○ Sunucu dahilinde nasıl kesin kaynak isteği işlendiğini belirler.
  • 19. SSL Nedir? ➔ Netscape tarafından, 1994 yılında, güvenli iletişim için tasarlandı. ➔ Secure Sockets Layer ➔ Adres çubuğunun başındaki asma kilit simgesi ➔ Güvenlik amacıyla ◆ e posta gönderilerinde, ◆ Ftp transferlerinde, ◆ alışveriş sitelerinde kullanılıyor. ➔ Nginx’te ilgili modül: ngx_http_ssl_module ➔ --with-http_ssl_module ile yüklenmesi gerekli ◆ OpenSSL kütüphanesi de gerekli ◆ Sunucu sertifikası herkese açık, Özel anahtar ise gizli ve erişimi kapalı ● Özel anahtar aynı zamanda nginx tarafından okunabilir olmalı
  • 20. SSL Yapılandırması ❖ Bu yapılandırmada tarayıcı talep edilen sunucuya bakmaksızın varsayılan sunucunun sertifikasını alır ve bu sertifikayı önerir. ➢ Örnek Yapı: server { listen 443; server_name www.ornekdomain.com; ssl on; ssl_certificate www.ornekdomain.com.crt; ssl_certificate_key www.ornekdomain.com.key; ssl_protocols SSLv3 TLSv1; ssl_ciphers HIGH:!ADH:!MD5; ... }
  • 21. Basic Auth Nedir? ➔ Kullanıcı adı ve parola eşleşmesine dayanan bir güvenlik önlemi ➔ Http Basic Authentication bazlı ➔ Sitenin tümünü ya da bir bölümünü sınırlayabiliyoruz ➔ Nginx’te ilgili modül: HttpAuthBasicModule
  • 22. Basic Auth Yapılandırması ❖ HttpAuthBasicModule ➢ auth_basic, auth_basic_user_file komutları var. ➢ http, server, location, limit_except bağlamları içerisinde kullanılırlar. ➢ auth_basic öntanımlı olarak ‘off’ ➢ Örnek Yapı: location / { auth_basic "Restricted"; auth_basic_user_file htpasswd; }
  • 23. URL Yönlendirmesi • URL yönlendirmesi için HttpRewriteModule’yi kullanıyoruz. • Söz dizimi: rewrite regex replacement [flag] şeklinde • Daha kapsamlı kullanım için nginx dokümantasyonuna bakın ve unutmayın IfIsEvil server { server_name .ornekdomain.org; rewrite ^ http://ornekdomain.com$request_uri? permanent; # ^ satır başını, $ ise satır sonunu ifade ediyor # #permanent bayrağı ise 301 koduyla beraber dönüyor# #$request_uri? ise “.com/”tan sonrasını kopyalamak için# }
  • 24. Ters Proxy Yapılandırması • Her şey için bir modül var: HttpProxyModule location / { #Yönlendirmeyi belirtiyoruz proxy_redirect http://www.ornekdomain.com:81 http://www.ornekdomain.com; proxy_redirect http://ornekdomain.com:81 http://ornekdomain.com; #Proxy’lenmiş sunucunun adresini ayarlıyoruz proxy_pass http://localhost:8080; #Proxy’lenmiş sunucuya gidecek birkaç “request header” tanımlıyoruz proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
  • 26. Kaynakça 1. Nginx Doc 2. Nginx wiki 3. A Tale of 3 Computers - Proxy vs Reverse Proxy 4. Nginx Conf for Apache 5. http://www.aosabook.org/en/nginx.html 6. SSL wiki 7. SSL Conf
  • 27. Ekstra • Nginx’in .conf uzantılı dosyaları için vim eklentisi • Nginx PCRE (Pearl Compatible Regular Expressions) kullanıyor. • Vagrant’a kurulum için Vagrantfile’deki port yönlendirmesi • config.vm.network :forwarded_port, guest: 80, host: 8080 • Apache araçlarını kullanmadan .htpasswd dosyasını ayarlamak için: Nginx FAQ • İşlemci sayısı için: cat /proc/cpuinfo | grep processor