Loading...
NGINX - čo dokáže





statický obsah

podpora SSL

virtual hosty

reverse proxying

kompresia

kontrola prístupu

access/error logy

URL rewriting

NGINX - prečo?
  • 1 proces vybavuje X požiadaviek
  • tisícky paralelných spojení
  • minimalizuje I/O
  • nízka spotreba RAM
  • výrazné zrýchlenie načítavania stránok
  • množstvo stále pribúdajúcich modulov
NGINX + Apache


NGINX + Apache
  • > inštalácia nginxu
  • nginx - konfigurácia
  • nginx - vytvorenie virtual hostu
  • zmeny v apache
  • > reštart apache2 a štart nginxu
          nginx reload
NGINX + Apache
  • > inštalácia nginxu

- na výber nginx-common, nginx-full, nginx

- líšia sa podľa počtu zahrnutých modulov

- možnosť zostaviť custom inštaláciu s vybranými oficiálnymi modulmi a/alebo modulmi tretích strán

NGINX + Apache
  • nginx - konfigurácia

user www-data;
worker_processes 2;
worker_rlimit_nofile 65535;

error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
    worker_connections 16384;
}

http {
    parameter value
}

NGINX + Apache
  • nginx - vytvorenie virtual hostu

upstream backend {
    server 127.0.0.1:80;
}

server {
    listen ServerIPAddress:80 default;
    location / {
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_pass http://backend/;
       track_uploads proxied 30s;
    }
}

NGINX + Apache
  • zmeny v apache

- vypnúť directory listing a multiviews

/etc/apache2/httpd.conf:
Options Indexes FollowSymLinks MultiViews

- vypnúť keep-alive funkcionalitu medzi frontendom a backendom

/etc/apache2/apache2.conf:
KeepAlive Off

- vypnúť detaily o serveri

/etc/apache2/conf.d/security:
ServerTokens Prod
ServerSignature Off
TraceEnable Off
NGINX + Apache
  • zmeny v apache

- vypnúť access logy = performace killer

/etc/apache2/sites-enabled/*:
CustomLog /data/web/example.com/logs/access_log common

/etc/apache2/conf.d/other-vhosts-access-log:
# Define an access log for VirtualHosts that don't define their own logfile
CustomLog ${APACHE_LOG_DIR}/other_vhosts_access.log vhost_combined

- zapnúť potrebné moduly

vhost_alias, expire, headers, rewrite, deflate

- obmedziť php open_basedir pre virtual hosty (áno/nie?)

/etc/apache2/sites-enabled/*:
php_admin_value open_basedir /data/web/example.com/:/tmp/
NGINX + Apache
  • zmeny v apache

- doinštalovať potrebné moduly kvôli nginx: fakessl, rpaf, ruid2

fakessl

- nastavenie apache systémovej premennej HTTPS on

rpaf

- nastavenie apache systémovej premennej REMOTE_ADDRESS podla X-Forwarded-For
  RPAFenable On
  RPAFproxy_ips 127.0.0.1

ruid2

- zmena vlastníka apache procesu podľa vlastníka php súboru:
   Rmode stat
   RMinUidGid #100 #100
   RDefaultUidGid www-data www-data
NGINX + Apache
  • zmeny v apache

- povoliť potrebné moduly kvôli perfomance: deflate, expire, headers

deflate

/etc/apache2/mods-enabled/deflate.conf:

<IfModule mod_deflate.c>
   AddOutputFilterByType DEFLATE text/html text/plain text/xml
   AddOutputFilterByType DEFLATE text/css text/javascript
   AddOutputFilterByType DEFLATE application/x-javascript application/javascript
   AddOutputFilterByType DEFLATE application/rss+xml text/x-component

   DeflateBufferSize 65535
   DeflateCompressionLevel 6

   BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
   Header append Vary User-Agent
</IfModule>
NGINX + Apache
  • zmeny v apache

- povoliť potrebné moduly kvôli perfomance: deflate, expire, headers

expire, headers

images/.htaccess:

<IfModule mod_expire.c>
   <IfModule mod_headers.c>
      Header unset Last-Modified
      Header set Cache-Control "public, max-age=2592000"
      FileETag none
      ExpiresActive On
      ExpiresDefault "access plus 1 month"
   </IfModule>
</IfModule>

css/.htaccess, js/.htaccess:
+ Header set Content-Type "text/css; charset=utf-8"
NGINX + Apache





NGINX + Apache
  • zmeny v apache

- úprava modulu php a jeho rozšírení:

php.ini

display_errors = Off
log_errors = On
error_reporting = E_ALL & ~E_NOTICE
realpath_cache_size = 1024k
realpath_cache_ttl = 600
disable_functions = apache_child_terminate,apache_setenv,...
open_basedir = /var/www/:/tmp/
NGINX + Apache
  • zmeny v apache

- úprava modulu php a jeho rozšírení:

APC rozšírenie

> apt-get install php-pear
> pecl install apc

/etc/php5/conf.d/apc.ini:
extension=apc.so
apc.shm_size = 256M
apc.num_files_hint = 5000
NGINX + Apache
  • reštart apache2 a štart nginxu

- test konfigurácie nginx:

> service nginx configtest

- test konfigurácie apache2:

> apache2ctl configtest

- reštart apache2 a štart nginxu:

> service apache2 restart; service nginx start
NGINX + Apache

Apache Server Status

Nginx Status

NGINX + Apache
MySQL
/etc/mysql/my.cnf:

open_files_limit=262144
key_buffer_size = 512M
max_connections = 500
innodb_file_per_table=1
innodb_buffer_pool_instances=2
innodb_buffer_pool_size=2G
innodb_log_buffer_size=8M
innodb_log_files_in_group=2
innodb_log_file_size=256M
innodb_open_files=65535
MySQL
Systém
  • zvýšenie limitov na počet otvorených súborov
/etc/security/limits.conf:
nginx soft nofile 65535
nginx hard nofile 65535
mysql soft nofile 262144
mysql hard nofile 262144
  • RAID pomocou mdadm
- emailové notifikácie:
/etc/mdadm/mdadm.conf ... MAILADDR user@example.com
/etc/default/mdadm ... DAEMON_OPTIONS="--syslog --test"
Systém
  • bonding - záložná konektivita
/network/interfaces:

auto bond0
iface bond0 inet static
slaves eth0 eth1
bond-mode active-backup
bond-downdelay 200
bond-updelay 200
post-up echo eth0 > /sys/class/net/bond0/bonding/primary
Systém
Monitoring
Monitoring