nginx/tr

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Nginx and the translation is 83% complete.

Outdated translations are marked like this.
Other languages:
Deutsch • ‎English • ‎Türkçe • ‎español • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어

Warning: Display title "nginx/tr" overrides earlier display title "Nginx".

nginx ufak, güçlü ve yüksek performanslı bir web/ters proxy (reverse proxy) sunucu yazılımıdır. Apache ve lighttpd gibi popüler web sunucu yazılımları için iyi bir alternatiftir.

Kurulum

www-servers/nginx paketini kurmadan önce, kullanabildiği USE bayraklarına göz atalım.

Genişletilmiş USE bayrakları

Nginx yeteneklerini artırmak için modülleri kullanır. Bu yaklaşımın faydalarını kullanmak için kurulumu sırasında hangi modüllerin kullanılacağını bazı USE setleri ile ayarlayabilirsiniz.

  • HTTP ile ilgili modüller NGINX_MODULES_HTTP değişkeniyle,
  • E-posta özellikleri ile ilgili modüller NGINX_MODULES_MAIL değişkeniyle,
  • Diğer üçüncü parti modüller de NGINX_ADD_MODULES değişkeni ile aktifleştirilebilir.

Bu değişkenler /etc/portage/make.conf dosyasında tanımlanmalıdır. Detaylı açıklamaları /usr/portage/profiles/desc/nginx_modules_http.desc ve /usr/portage/profiles/desc/nginx_modules_mail.desc adreslerinde bulunabilir.

Örneğin fastcgi modülünü etkinleştirmek için:

FILE /etc/portage/make.confNginx USE etkinleştirme örneği
NGINX_ADD_HTTP="fastcgi"

The above will overwrite the default value of NGINX_MODULES_HTTP and set it to fastcgi. To enable the fastcgi module without overwriting the default NGINX_MODULES_HTTP value, the following USE flag notation can be specified in /etc/portage/package.use:

FILE /etc/portage/package.use
www-servers/nginx NGINX_MODULES_HTTP: fastcgi

USE bayrakları

USE flags for www-servers/nginx Robust, small and high performance http and reverse proxy server

aio Enables file AIO support
http Enable HTTP core support
http-cache Enable HTTP cache support
http2 Enable HTTP2 module support
libatomic Use libatomic instead of builtin atomic operations
luajit Use dev-lang/luajit instead of dev-lang/lua for lua support when building the lua http module.
pcre-jit Enable JIT for pcre
rtmp NGINX-based Media Streaming Server
ssl Enable HTTPS module for http. Enable SSL/TLS support for POP3/IMAP/SMTP for mail.

Emerge

USE bayraklarıı ayarladıysanız, www-servers/nginx paketini kurun:

root #emerge --ask www-servers/nginx

Kurulumun onaylanması

The default nginx configuration defines a virtual server with the root directory set to /var/www/localhost/htdocs. However due to bug #449136, the nginx ebuild will only create the /var/www/localhost directory and without an index file. To have a working default configuration, create the /var/www/localhost/htdocs directory and simple index file:

root #mkdir /var/www/localhost/htdocs
root #echo 'Hello, world!' > /var/www/localhost/htdocs/index.html

nginx paketi, servisi durdurmak, başlatmak ve yeniden başlatmak için yardımcı olan bir servis betiği ile gelir. nginx servisini başlatmak için:

root #/etc/init.d/nginx start

nginx'in doğru şekilde çalıştığına emin olmak için, web tarayıcınızdan http://localhost adresine gidebilir veya curl gibi bir komut satırı aracını kullanabilirsiniz:

user $curl http://localhost

Yapılandırma

nginx yapılandırması /etc/nginx/nginx.conf dosyası üzerinde düzenlenir.

Tek site erişimi

Aşağıdaki örnek, (PHP gibi) dinamik özellikleri olmayan tek site yapılandırması içindir.

FILE /etc/nginx/nginx.confÖntanımlı Gentoo yapılandırması
user nginx nginx;
worker_processes 1;
  
error_log /var/log/nginx/error_log info;
  
events {
        worker_connections 1024;
        use epoll;
}
  
http {
        include /etc/nginx/mime.types;
        default_type application/octet-stream;
  
        log_format main
                '$remote_addr - $remote_user [$time_local] '
                '"$request" $status $bytes_sent '
                '"$http_referer" "$http_user_agent" '
                '"$gzip_ratio"';
  
        client_header_timeout 10m;
        client_body_timeout 10m;
        send_timeout 10m;
  
        connection_pool_size 256;
        client_header_buffer_size 1k;
        large_client_header_buffers 4 2k;
        request_pool_size 4k;
  
        gzip on;
        gzip_min_length 1100;
        gzip_buffers 4 8k;
        gzip_types text/plain;
  
        output_buffers 1 32k;
        postpone_output 1460;
  
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
  
        keepalive_timeout 75 20;
  
        ignore_invalid_headers on;
  
        index index.html;
  
        server {
                listen 127.0.0.1;
                server_name localhost;
  
                access_log /var/log/nginx/localhost.access_log main;
                error_log /var/log/nginx/localhost.error_log info;
  
                root /var/www/localhost/htdocs;
        }
}

Birden çok site erişimi

Birden fazla yapılandırma dosyasında daha kolay yönetim sağlamak için include yönergesi kullanılabilir:

FILE /etc/nginx/nginx.confBirden fazla site sunumu
user nginx nginx;
worker_processes 1;
   
error_log /var/log/nginx/error_log info;
  
events {
        worker_connections 1024;
        use epoll;
}
http {
        include /etc/nginx/mime.types;
        default_type application/octet-stream;
  
        log_format main
                '$remote_addr - $remote_user [$time_local] '
                '"$request" $status $bytes_sent '
                '"$http_referer" "$http_user_agent" '
                '"$gzip_ratio"';
  
        client_header_timeout 10m;
        client_body_timeout 10m;
        send_timeout 10m;
  
        connection_pool_size 256;
        client_header_buffer_size 1k;
        large_client_header_buffers 4 2k;
        request_pool_size 4k;
  
        gzip on;
        gzip_min_length 1100;
        gzip_buffers 4 8k;
        gzip_types text/plain;
  
        output_buffers 1 32k;
        postpone_output 1460;
  
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
  
        keepalive_timeout 75 20;
  
        ignore_invalid_headers on;
  
        index index.html;
 
        include /etc/nginx/conf.d/*.conf;
}
FILE /etc/nginx/conf.d/local.confÖrnek bir site
server {
        listen 127.0.0.1;
        server_name localhost;
  
        access_log /var/log/nginx/localhost.access_log main;
        error_log /var/log/nginx/localhost.error_log info;
  
        root /var/www/localhost/htdocs;
}
FILE /etc/nginx/conf.d/local-ssl.confÖrnek bir SSL destekli site
server {
    listen 443 ssl;
    server_name host.tld;
    ssl_certificate /etc/ssl/nginx/host.tld.pem;
    ssl_certificate_key /etc/ssl/nginx/host.tld.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-RSA-RC4-SHA:ECDHE-ECDSA-RC4-SHA:AES128:AES256:RC4-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK;
    ssl_dhparam /etc/ssl/nginx/host.tld.dh4096.pem;
    ssl_session_timeout 5m;
    ssl_session_cache shared:SSL:50m;
}

PHP desteği

PHP desteğini açmak için aşağıdaki satırları nginx yapılandırma dosyasına ekleyebilirsiniz. Bu örnekte nginx PHP ile iletişimini UNIX soketi üzerinden yapmakta.

FILE /etc/nginx/nginx.confPHP desteği örneği
...
http {
...
    server { 
    ...
            location ~ \.php$ {
                       # Olmayan dosyalari test edip 404 hatasi ver
                       # Bu satir olmazsa nginx gelen her .php ile biten istegi incelemeden php-fpm e gonderir
                       try_files $uri =404;
                       include /etc/nginx/fastcgi.conf;
                       fastcgi_pass unix:/run/php-fpm.socket;
           }
    }
}

Bu şekilde çalışabilmek için PHP FastCGI desteği ile (php-fpm) derlenmiş olmalıdır, bu da fpm bayrağı ile sağlanır:

root #echo "dev-lang/php fpm" >> /etc/portage/package.use

Ardından PHP'yi fpm USE bayrağıyla tekrar derleyelim:

root #emerge --ask dev-lang/php
Not
UNIX soket iletişimi önerilen yöntemdir

/etc/php/fpm-php5.5/php-fpm.conf dosyasını inceleyip aşağıdaki satırı ekleyin:

FILE /etc/php/fpm-php5.5/php-fpm.confPHP'yi UNIX soket desteğiyle çalıştırmak
listen = /run/php-fpm.socket
listen.owner = nginx

For PHP 7.0 and newer configuration file is slightly different:

FILE /etc/php/fpm-php7.1/fpm.d/www.confRunning PHP with UNIX socket support
listen = /run/php-fpm.socket
listen.owner = nginx

php-fpm'e ait php.ini dosyasında zaman dilimini ayarlayın. Bunun için ilgili zaman dilimini aşağıda <ZAMAN_DİLİMİ> ile belirtilen yere ekleyin:

FILE /etc/php/fpm-php5.5/php.iniphp.ini dosyasında zaman dilimi ayarı
date.timezone = <ZAMAN DİLİMİ>

Ardından php-fpm servisini başlatın:

root #/etc/init.d/php-fpm start

php-fpm servisini açılışta başlamak üzere öntanımlı çalışma seviyesine ekleyin:

root #rc-update add php-fpm default

nginx servisini yeni yapılandırma ile yeniden yükleyin:

root #/etc/init.d/nginx reload

IP adresiyle eirşim kısıtlaması

Sıradaki örneğimiz belirlediğimiz bir sayfaya (bu örnekte /nginx_status) sadece seçtiğimiz kaynaklardan ulaşılabilmesi, bunlar aşağıdaki gibi:

  • IP adresleri (Örn. 192.0.2.1 127.0.0.1)
  • IP ağ blokları (Örn. 198.51.100.0/24)

olabilir.

  • certain hosts (e.g. 192.0.2.1 127.0.0.1)
  • and IP networks (e.g. 198.51.100.0/24)
FILE /etc/nginx/nginx.conf/nginx_status sayfası için IP adres kısıtlaması örneği
http {
    server { 
            location /nginx_status {
                     stub_status on;
                     allow 127.0.0.1/32;
                     allow 192.0.2.1/32;
                     allow 198.51.100.0/24;
                     deny all;
             }
     }
}

Basit yetkilendirme

nginx kullanıcı adı ve parola sorup yetkilendirme yapma desteğine de sahiptir:

FILE /etc/nginx/nginx.conf/ lokasyonu için kullanıcı adı - parola yetkilendirmesi
http {
    server { 
            location / {
                   auth_basic           "Authentication failed";
                   auth_basic_user_file conf/htpasswd;
             }
     }
}

htpasswd dosyası aşağıdaki şekilde oluşturulabilir:

user $openssl passwd

Üçüncü parti modüller

Üçüncü parti modülü indirip /usr/src dizinine koyun. Ardından elle derleyip, /etc/portage/make.conf dosyasına şu şekilde ekleyin:

FILE /etc/portage/make.conf3. parti modül ekleme
NGINX_ADD_MODULES="/usr/src/nginx_modülünün_ismi"

Üçüncü parti modül ile nginx'i tekrar derleyin:

root #emerge --ask nginx

Kullanım

Servis kontrolü

OpenRC

Nginx'i başlatmak:

root #/etc/init.d/nginx start

Nginx'i durdur:

root #/etc/init.d/nginx stop

Nginx'i öntanımlı çalışma seviyesine ekle:

root #rc-update add nginx default

Reload nginx configuration without dropping connections:

root #rc-service nginx reload

Nginx'i yeniden başlat:

root #/etc/init.d/nginx restart

systemd

Start nginx web server:

root #systemctl start nginx

Stop nginx web server:

root #systemctl stop nginx

Check the status of the service:

root #systemctl status nginx

Enable service to start automatically on system reboot:

root #systemctl enable nginx

Reload nginx configuration without dropping connections:

root #systemctl reload nginx

Restart the nginx service:

root #systemctl restart nginx

Olası Problemler

Problem yaşarsanız aşağıdaki komutlar sebebini bulmanıza yardımcı olabilir.

Yapılandırmayı onaylama

nginx ayar dosyalarının belirgin bir hatası olmadığını kontrol etmek için:

root #/usr/sbin/nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

nginx komutunu -t parametresi ile çalıştırırsanız, servis başlatmadan sadece kontrolleri yapacaktır.

İşlemlerin çalıştığına emin olun

nginx işlemlerinin çalıştığına emin olun:

user $ps aux | egrep 'nginx|PID'
  PID TTY      STAT   TIME COMMAND
26092 ?        Ss     0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
26093 ?        S      0:00 nginx: worker proces

Adres ve portların kullanımda olduğuna emin olun

nginx servisinin doğru portları dinlediğinden emin olun (HTTP için 80 ve HTTPS için 443 gibi):

root #netstat -tulpen | grep :80
tcp        0      0 127.0.0.1:80            0.0.0.0:*               LISTEN      0          12336835   -26092/nginx: master

Ayrıca bkz.

  • Apache - Popüler HTTP sunucusu
  • Lighttpd - Hızlı ve hafif bir web sunucu

Harici kaynaklar