Ero sivun ”Nginx” versioiden välillä
Rivi 176: | Rivi 176: | ||
geoip_country /etc/nginx/GeoIP.dat; | geoip_country /etc/nginx/GeoIP.dat; | ||
− | ja lisätä sitten sivusi konfiguraatioon maat jotka estetään | + | ja lisätä sitten sivusi konfiguraatioon maat jotka estetään. Esimerkissä on Kiina, Korea ja Yhdistyneet Kuningaskunnat (Iso-Britannia) |
if ($geoip_country_code ~ (CN|KR|UK) ) { | if ($geoip_country_code ~ (CN|KR|UK) ) { |
Versio 15. helmikuuta 2015 kello 18.45
Nginx (lausuntaan engine-x) on toiseksi yleisin webbipalvelin Apachen jälkeen. Nginx käytetään nykyisin todella paljon suurissa palvelinkeskuksissa, esim. Google ja Facebook käyttävät tätä webbipalvelinta. Nginx sisältää HTTP, proxy ja sähköpostipalvelut.
Sisällysluettelo
Asennus
Asennetaan Nginx
aptitude install nginx
Käynnistä palvelu
service nginx start
Webbipalvelimen Konfigurointi
Nginx konfiguraatio hakemisto on:
/etc/nginx
Avaa ja muokkaa tiedostoa
/etc/nginx/sites-enabled/default
Kirjoita tiedostoon seuraavasti:
server { listen 80; server_name example.org www.example.org; root /var/www; index index.html index.htm; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; }
Virtuaalipalvelimet
http { server { # Virtuaalipalvelin 1 } server { # Virtuaalipalvelin 2 } }
Virtuaalipalvelimeen voit määrittää myös IP-osoitteen ja portin, jota palvelin kuuntelee. Tuettuna on myös IPv6 osoitteet, mutta tämä on laitettava hakasulkeisiin.
listen 127.0.0.1:8080;
Oletus virtuaalipalvelin:
listen 80 default_server;
Määritetään palvelimen nimi, johon se vastaa. Tämä voi myös merkitä asteriksilläkin.
server_name example.org www.example.org;
Sijainnit
location /some/path/
Aliakset
location /i/ { alias /data/w3/images/; }
Tiedostolistaukset
location /testing { autoindex on; autoindex_exact_size off; autoindex_localtime on; }
Virhesivut
error_page direktiivillä voit määrittää virhesivut. Määritä HTTP virhekoodi. Lista virhekoodeista löytyy täältä http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
error_page 404 /404.html;
Kokeile muodostaa palvelimeen yhteys verkkoselaimella. Sivuston sisältöä voit muokata hakemistosta:
/var/www
hakemistossa
Salasanasuojattu sivu
Lisätään /etc/nginx/sites-enabled/default tiedostoon pari riviä
location / { auth_basic "Tähän voit määritellä ilmoituksen minkä haluat sivuille pyrkijöille ilmestyvän"; auth_basic_user_file tähän polkun tiedostoon josta löytyy salasanat käyttäjille; }
Sitten tehdään tiedosto salasanoille
nano /var/www/.password
tiedosto on siis piilotettu
htpasswd -c /var/www/salaista/.password johannes
näin tehtiin käyttäjä
Pakkaaminen
Verkkosivut kannattaa pakata ennen lähettämistä, sillä se säästää kaistaa ja aikaa.
Otetaan käyttöön gzip pakkaus
gzip on;
Poistetaan käytöstä jos on IE6
gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6;
Määritä gzip:n pakkauksen taso. Arvo voi olla 1 - 9 välillä.
gzip_buffers 16 8k; gzip_http_version 1.1;
gziptyypit, css, json, javascript, xml, rss.
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
Tarkempi ohje Nginx sivuilla: http://nginx.org/en/docs/http/ngx_http_gzip_module.html
Testaa onko verkkosivu pakattu: http://nginx.org/en/docs/http/ngx_http_gzip_module.html
Suojaaminen
Estä Nginx version lähettäminen
Avaa Nginx konfigurointi tiedosto
nano /etc/nginx/nginx.conf
ja muuta server-tokens arvoksi off.
server_tokens off;
Estä tietyt User-agentit ja hakukonebotit:
Avaa sites-enabled sivuston konfiguroinnit ja lisää server { alle.
## Block download agenta if ($http_user_agent ~* LWP::Simple|wget|libwww-perl) { return 403; }
## Block some nasty robots if ($http_user_agent ~ (msnbot|Purebot|Baiduspider|Lipperhey|Mail.Ru|scrapbot) ) { return 403; }
Estä spämmit
## Deny referal spam if ( $http_referer ~* (jewelry|viagra|nude|girl|nudit|casino|poker|porn|sex|teen|babes) ) { return 403; }
Estä maakohtaisesti:
Sinun tulee ladata tietokanta:
http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
ja siirää sitten nginx hakemistoon sekä määrittää /etc/nginx/nginx.conf tiedostoon:
geoip_country /etc/nginx/GeoIP.dat;
ja lisätä sitten sivusi konfiguraatioon maat jotka estetään. Esimerkissä on Kiina, Korea ja Yhdistyneet Kuningaskunnat (Iso-Britannia)
if ($geoip_country_code ~ (CN|KR|UK) ) { return 403; }
Estä suoralinkitys sivustosi materiaaliin. Vaihda mywebsite.com omaksi domainiksi.
location ~ .(gif|png|jpe?g)$ { valid_referers none blocked mywebsite.com *.mywebsite.com; if ($invalid_referer) { return 403; } }
PHP asennus
apt-get install php5-fpm
Aptitude komento ei toimi Nginx kanssa.
nano /etc/php5/fpm/php.ini
Etsi rivi cgi.fix_pathinfo=1 ja muokkaa 1 -> 0.
Lisää seuraava rivi /etc/nginx/mime.types tiedostoon:
text/php php php5;
Lisää tämä /etc/nginx/sites-enabled/default tiedostoon:
server { ... index index.html index.htm index.php; ... location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # With php5-cgi alone: #fastcgi_pass 127.0.0.1:9000; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } }
Luo .php tiedosto, esim. index.php ja lisää sinne seuraava rivi:
<?php phpinfo (); ?>
Avaa selain ja suuntaa palvelimesi IP-osoitteeseen ja sinulle pitäisi tulostua tietoa PHP:stä
HTTPS
Lisää seuraava konfigurointi tiedostoosi:
server { listen 443 ssl; server_name www.example.com; ssl_certificate www.example.com.crt; ssl_certificate_key www.example.com.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; ... }
Muuta tästä SSL sertifikaatti tiedostojesi sijainti:
SSL sertifikaatti:
ssl_certificate www.example.com.crt;
SSL avain:
ssl_certificate_key www.example.com.key;
SSL Chipper
Yksinkertainen SSL:
ssl_ciphers 'AES256+EECDH:AES256+EDH';
Suosittu yhteensopivuuden kanssa:
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:!3DES";
http://nginx.org/en/docs/http/configuring_https_servers.html
Esimerkki
server { listen [::]:443 default_server; ssl on; ssl_certificate_key /etc/ssl/cert/raymii_org.pem; ssl_certificate /etc/ssl/cert/ca-bundle.pem; ssl_ciphers 'AES256+EECDH:AES256+EDH:!aNULL'; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_session_cache shared:SSL:10m; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.4.4 8.8.8.8 valid=300s; resolver_timeout 10s; ssl_prefer_server_ciphers on; ssl_dhparam /etc/ssl/certs/dhparam.pem; add_header Strict-Transport-Security max-age=63072000; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; root /var/www/; index index.html index.htm; server_name raymii.org; }
Uudelleenohjaus HTTP -> HTTPS
return 301 https://$server_name$request_uri;
Uudelleenohjaus -> index.php
location / { if (-f $request_filename) { expires 30d; break; } if (!-e $request_filename) { rewrite ^(.+)$ /index.php?q=$1 last; } }
Lisätietoa
https://www.omaserveri.info/virtuaalipalvelimen-luominen-nginxissa/
Lähteet
https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html