Mainos / Advertisement:

Ero sivun ”Nginx” versioiden välillä

Kohteesta Taisto
Siirry navigaatioon Siirry hakuun
(Tämä versio merkittiin käännettäväksi)
Rivi 1: Rivi 1:
 
<languages/>
 
<languages/>
 
<translate>
 
<translate>
 +
<!--T:1-->
 
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.
 
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.
  
== Asennus ==
+
== Asennus == <!--T:2-->
  
 +
<!--T:3-->
 
Asennetaan Nginx 1.2
 
Asennetaan Nginx 1.2
  
  [[aptitude]] install nginx
+
  <!--T:4-->
 +
[[aptitude]] install nginx
  
 +
<!--T:5-->
 
Käynnistä palvelu
 
Käynnistä palvelu
  
   service nginx start
+
   <!--T:6-->
 +
service nginx start
  
 +
<!--T:7-->
 
Jos haluat uudemman version (Nginx 1.8) lisää source.list tiedostoon dotdeb repot
 
Jos haluat uudemman version (Nginx 1.8) lisää source.list tiedostoon dotdeb repot
  
   nano /etc/apt/source.list
+
   <!--T:8-->
 +
nano /etc/apt/source.list
  
 +
<!--T:9-->
 
<pre>
 
<pre>
 
deb http://packages.dotdeb.org wheezy all
 
deb http://packages.dotdeb.org wheezy all
 
deb-src http://packages.dotdeb.org wheezy all
 
deb-src http://packages.dotdeb.org wheezy all
  
 +
<!--T:10-->
 
deb http://packages.dotdeb.org wheezy-php56 all
 
deb http://packages.dotdeb.org wheezy-php56 all
 
deb-src http://packages.dotdeb.org wheezy-php56 all
 
deb-src http://packages.dotdeb.org wheezy-php56 all
 
</pre>
 
</pre>
  
 +
<!--T:11-->
 
Sulje ja tallenna. Lisää lisäksi GnuPG avain
 
Sulje ja tallenna. Lisää lisäksi GnuPG avain
  
   wget https://www.dotdeb.org/dotdeb.gpg
+
   <!--T:12-->
 +
wget https://www.dotdeb.org/dotdeb.gpg
 
   sudo apt-key add dotdeb.gpg
 
   sudo apt-key add dotdeb.gpg
  
 +
<!--T:13-->
 
Tämän jälkeen aja komento  
 
Tämän jälkeen aja komento  
  
   aptitude update && aptitude dist-upgrade && aptitude install nginx
+
   <!--T:14-->
 +
aptitude update && aptitude dist-upgrade && aptitude install nginx
  
 +
<!--T:15-->
 
Tarkista Nginx versio
 
Tarkista Nginx versio
  
   nginx -v
+
   <!--T:16-->
 +
nginx -v
  
== Webbipalvelimen Konfigurointi ==
+
== Webbipalvelimen Konfigurointi == <!--T:17-->
  
 +
<!--T:18-->
 
Nginx konfiguraatio hakemisto on:
 
Nginx konfiguraatio hakemisto on:
  
   /etc/nginx
+
   <!--T:19-->
 +
/etc/nginx
  
 +
<!--T:20-->
 
Avaa ja muokkaa tiedostoa
 
Avaa ja muokkaa tiedostoa
  
   /etc/nginx/sites-enabled/default
+
   <!--T:21-->
 +
/etc/nginx/sites-enabled/default
  
 +
<!--T:22-->
 
Kirjoita tiedostoon seuraavasti:
 
Kirjoita tiedostoon seuraavasti:
  
 
   
 
   
  
     server {
+
     <!--T:23-->
 +
server {
 
         listen 80;
 
         listen 80;
 
         server_name example.org www.example.org;
 
         server_name example.org www.example.org;
Rivi 61: Rivi 82:
 
     }
 
     }
  
=== Virtuaalipalvelimet ===
+
=== Virtuaalipalvelimet === <!--T:24-->
  
  http {
+
  <!--T:25-->
 +
http {
 
    
 
    
 
     server {
 
     server {
Rivi 74: Rivi 96:
 
  }
 
  }
  
 +
<!--T:26-->
 
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.
 
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;
+
   <!--T:27-->
 +
listen 127.0.0.1:8080;
  
 +
<!--T:28-->
 
Oletus virtuaalipalvelin:
 
Oletus virtuaalipalvelin:
  
   listen      80 default_server;
+
   <!--T:29-->
 +
listen      80 default_server;
  
 +
<!--T:30-->
 
Määritetään palvelimen nimi, johon se vastaa. Tämä voi myös merkitä asteriksilläkin.
 
Määritetään palvelimen nimi, johon se vastaa. Tämä voi myös merkitä asteriksilläkin.
  
     server_name example.org www.example.org;
+
     <!--T:31-->
 +
server_name example.org www.example.org;
  
=== Sijainnit ===
+
=== Sijainnit === <!--T:32-->
  
   location /some/path/
+
   <!--T:33-->
 +
location /some/path/
  
==== Aliakset ====
+
==== Aliakset ==== <!--T:34-->
  
  location /i/ {
+
  <!--T:35-->
 +
location /i/ {
 
     alias /data/w3/images/;
 
     alias /data/w3/images/;
 
  }
 
  }
  
==== Tiedostolistaukset ====
+
==== Tiedostolistaukset ==== <!--T:36-->
  
  location /testing {
+
  <!--T:37-->
 +
location /testing {
 
  autoindex on;
 
  autoindex on;
 
  autoindex_exact_size off;
 
  autoindex_exact_size off;
Rivi 104: Rivi 135:
 
  }
 
  }
  
=== Virhesivut ===
+
=== Virhesivut === <!--T:38-->
  
 +
<!--T:39-->
 
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 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;
+
   <!--T:40-->
 +
error_page 404 /404.html;
  
  
  
 +
<!--T:41-->
 
Kokeile muodostaa palvelimeen yhteys verkkoselaimella. Sivuston sisältöä voit muokata hakemistosta:
 
Kokeile muodostaa palvelimeen yhteys verkkoselaimella. Sivuston sisältöä voit muokata hakemistosta:
  
   /var/www
+
   <!--T:42-->
 +
/var/www
  
 +
<!--T:43-->
 
hakemistossa
 
hakemistossa
  
=== Salasanasuojattu sivu ===
+
=== Salasanasuojattu sivu === <!--T:44-->
  
 +
<!--T:45-->
 
Lisätään ''/etc/nginx/sites-enabled/default'' tiedostoon pari riviä
 
Lisätään ''/etc/nginx/sites-enabled/default'' tiedostoon pari riviä
  
  location / {
+
  <!--T:46-->
 +
location / {
 
  auth_basic "''Tähän voit määritellä ilmoituksen minkä haluat sivuille pyrkijöille ilmestyvän''";
 
  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'';
 
  auth_basic_user_file ''tähän polkun tiedostoon josta löytyy salasanat käyttäjille'';
 
  }
 
  }
  
 +
<!--T:47-->
 
Sitten tehdään tiedosto salasanoille
 
Sitten tehdään tiedosto salasanoille
  
  nano /var/www/.password
+
  <!--T:48-->
 +
nano /var/www/.password
  
 +
<!--T:49-->
 
tiedosto on siis piilotettu
 
tiedosto on siis piilotettu
  
  htpasswd -c /var/www/salaista/.password johannes
+
  <!--T:50-->
 +
htpasswd -c /var/www/salaista/.password johannes
  
 +
<!--T:51-->
 
näin tehtiin käyttäjä
 
näin tehtiin käyttäjä
  
=== Pakkaaminen ===
+
=== Pakkaaminen === <!--T:52-->
  
 +
<!--T:53-->
 
Verkkosivut kannattaa pakata ennen lähettämistä, sillä se säästää kaistaa ja aikaa.
 
Verkkosivut kannattaa pakata ennen lähettämistä, sillä se säästää kaistaa ja aikaa.
  
  
 +
<!--T:54-->
 
Otetaan käyttöön gzip pakkaus
 
Otetaan käyttöön gzip pakkaus
 
  gzip on;
 
  gzip on;
Rivi 155: Rivi 200:
 
  gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
 
  gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
  
 +
<!--T:55-->
 
Tarkempi ohje Nginx sivuilla: http://nginx.org/en/docs/http/ngx_http_gzip_module.html
 
Tarkempi ohje Nginx sivuilla: http://nginx.org/en/docs/http/ngx_http_gzip_module.html
  
 +
<!--T:56-->
 
Testaa onko verkkosivu pakattu: 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 ===
+
=== Suojaaminen === <!--T:57-->
  
 +
<!--T:58-->
 
Estä Nginx version lähettäminen
 
Estä Nginx version lähettäminen
  
 +
<!--T:59-->
 
Avaa Nginx konfigurointi tiedosto
 
Avaa Nginx konfigurointi tiedosto
  
   nano /etc/nginx/nginx.conf
+
   <!--T:60-->
 +
nano /etc/nginx/nginx.conf
  
 +
<!--T:61-->
 
ja muuta server-tokens arvoksi off.
 
ja muuta server-tokens arvoksi off.
  
 +
<!--T:62-->
 
server_tokens off;
 
server_tokens off;
  
 +
<!--T:63-->
 
Estä tietyt User-agentit ja hakukonebotit:
 
Estä tietyt User-agentit ja hakukonebotit:
  
 +
<!--T:64-->
 
Avaa sites-enabled sivuston konfiguroinnit ja lisää server { alle.
 
Avaa sites-enabled sivuston konfiguroinnit ja lisää server { alle.
  
   ## Block download agenta
+
   <!--T:65-->
 +
## Block download agenta
 
     if ($http_user_agent ~* LWP::Simple|wget|libwww-perl) {
 
     if ($http_user_agent ~* LWP::Simple|wget|libwww-perl) {
 
               return 403;
 
               return 403;
 
     }
 
     }
  
   ## Block some nasty robots
+
   <!--T:66-->
 +
## Block some nasty robots
 
     if ($http_user_agent ~ (msnbot|Purebot|Baiduspider|Lipperhey|Mail.Ru|scrapbot) ) {
 
     if ($http_user_agent ~ (msnbot|Purebot|Baiduspider|Lipperhey|Mail.Ru|scrapbot) ) {
 
               return 403;
 
               return 403;
 
     }
 
     }
  
 +
<!--T:67-->
 
Estä spämmit
 
Estä spämmit
  
   ## Deny referal spam
+
   <!--T:68-->
 +
## Deny referal spam
 
     if ( $http_referer ~* (jewelry|viagra|nude|girl|nudit|casino|poker|porn|sex|teen|babes) ) {
 
     if ( $http_referer ~* (jewelry|viagra|nude|girl|nudit|casino|poker|porn|sex|teen|babes) ) {
 
     return 403;  
 
     return 403;  
 
     }
 
     }
  
 +
<!--T:69-->
 
Estä maakohtaisesti:
 
Estä maakohtaisesti:
  
 +
<!--T:70-->
 
Sinun tulee ladata tietokanta ja purkaa pakattu gz tiedosto.
 
Sinun tulee ladata tietokanta ja purkaa pakattu gz tiedosto.
  
   http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
+
   <!--T:71-->
 +
http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
  
 +
<!--T:72-->
 
ja siirää sitten nginx hakemistoon sekä määrittää /etc/nginx/nginx.conf tiedostoon:  
 
ja siirää sitten nginx hakemistoon sekä määrittää /etc/nginx/nginx.conf tiedostoon:  
  
   geoip_country /etc/nginx/GeoIP.dat;
+
   <!--T:73-->
 +
geoip_country /etc/nginx/GeoIP.dat;
  
 +
<!--T:74-->
 
ja lisätä sitten sivusi konfiguraatioon maat jotka estetään. Esimerkissä on Kiina, Korea ja Yhdistyneet Kuningaskunnat (Iso-Britannia)
 
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) ) {
+
   <!--T:75-->
 +
if ($geoip_country_code ~ (CN|KR|UK) ) {
 
   return 403;
 
   return 403;
 
  }
 
  }
  
 +
<!--T:76-->
 
Estä suoralinkitys sivustosi materiaaliin. Vaihda mywebsite.com omaksi domainiksi.
 
Estä suoralinkitys sivustosi materiaaliin. Vaihda mywebsite.com omaksi domainiksi.
  
   location ~ .(gif|png|jpe?g)$ {
+
   <!--T:77-->
 +
location ~ .(gif|png|jpe?g)$ {
 
     valid_referers none blocked mywebsite.com *.mywebsite.com;
 
     valid_referers none blocked mywebsite.com *.mywebsite.com;
 
     if ($invalid_referer) {
 
     if ($invalid_referer) {
Rivi 217: Rivi 284:
 
  }
 
  }
  
== PHP asennus ==
+
== PHP asennus == <!--T:78-->
  
 +
<!--T:79-->
 
Asenna PHP5-fpm paketti pakettihallinnasta
 
Asenna PHP5-fpm paketti pakettihallinnasta
  
   apt-get install php5-fpm
+
   <!--T:80-->
 +
apt-get install php5-fpm
  
 +
<!--T:81-->
 
Aptitude komento ei toimi Nginx kanssa.
 
Aptitude komento ei toimi Nginx kanssa.
  
   nano /etc/php5/fpm/php.ini
+
   <!--T:82-->
 +
nano /etc/php5/fpm/php.ini
  
   Etsi rivi cgi.fix_pathinfo=1 ja muokkaa 1 -> 0.
+
   <!--T:83-->
 +
Etsi rivi cgi.fix_pathinfo=1 ja muokkaa 1 -> 0.
  
 +
<!--T:84-->
 
Lisää seuraava rivi ''/etc/nginx/mime.types'' tiedostoon:
 
Lisää seuraava rivi ''/etc/nginx/mime.types'' tiedostoon:
  
   text/php                            php php5;
+
   <!--T:85-->
 +
text/php                            php php5;
  
 +
<!--T:86-->
 
Lisää tämä ''/etc/nginx/sites-enabled/default'' tiedostoon:
 
Lisää tämä ''/etc/nginx/sites-enabled/default'' tiedostoon:
  
     server {
+
     <!--T:87-->
 +
server {
 
     ...
 
     ...
 
     index index.html index.htm index.php;
 
     index index.html index.htm index.php;
Rivi 253: Rivi 329:
 
   }
 
   }
  
 +
<!--T:88-->
 
Luo .php tiedosto, esim. index.php ja lisää sinne seuraava rivi:
 
Luo .php tiedosto, esim. index.php ja lisää sinne seuraava rivi:
  
   <?php phpinfo (); ?>
+
   <!--T:89-->
 +
<?php phpinfo (); ?>
  
 +
<!--T:90-->
 
Avaa selain ja suuntaa palvelimesi IP-osoitteeseen ja sinulle pitäisi tulostua tietoa PHP:stä
 
Avaa selain ja suuntaa palvelimesi IP-osoitteeseen ja sinulle pitäisi tulostua tietoa PHP:stä
  
== HTTPS ==
+
== HTTPS == <!--T:91-->
  
 +
<!--T:92-->
 
Lisää seuraava konfigurointi  tiedostoosi:
 
Lisää seuraava konfigurointi  tiedostoosi:
  
   server {
+
   <!--T:93-->
 +
server {
 
     listen              443 ssl;
 
     listen              443 ssl;
 
     server_name        www.example.com;
 
     server_name        www.example.com;
Rivi 274: Rivi 355:
  
  
 +
<!--T:94-->
 
Muuta tästä SSL sertifikaatti tiedostojesi sijainti:
 
Muuta tästä SSL sertifikaatti tiedostojesi sijainti:
  
 +
<!--T:95-->
 
SSL sertifikaatti:
 
SSL sertifikaatti:
 
     ssl_certificate    www.example.com.crt;
 
     ssl_certificate    www.example.com.crt;
Rivi 281: Rivi 364:
 
     ssl_certificate_key www.example.com.key;
 
     ssl_certificate_key www.example.com.key;
  
=== SSL Chipper ===
+
=== SSL Chipper === <!--T:96-->
  
 +
<!--T:97-->
 
Yksinkertainen SSL:
 
Yksinkertainen SSL:
  
   ssl_ciphers 'AES256+EECDH:AES256+EDH';
+
   <!--T:98-->
 +
ssl_ciphers 'AES256+EECDH:AES256+EDH';
  
 +
<!--T:99-->
 
Suosittu yhteensopivuuden kanssa:
 
Suosittu yhteensopivuuden kanssa:
  
 +
<!--T:100-->
 
<pre>
 
<pre>
 
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:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
 
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:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
 
</pre>
 
</pre>
  
=== DH Param ===
+
=== DH Param === <!--T:101-->
  
 +
<!--T:102-->
 
Luo DH Param. Tämä vie hetken:  
 
Luo DH Param. Tämä vie hetken:  
  
   $ openssl dhparam 2048 -out /etc/ssl/dhparam.pem
+
   <!--T:103-->
 +
$ openssl dhparam 2048 -out /etc/ssl/dhparam.pem
  
 +
<!--T:104-->
 
Avaa Nginx konfigurointi tiedosto sites-enabled hakemistosta ja liitä SSL konffeihin:  
 
Avaa Nginx konfigurointi tiedosto sites-enabled hakemistosta ja liitä SSL konffeihin:  
  
   ssl_dhparam /etc/ssl/dhparam.pem;
+
   <!--T:105-->
 +
ssl_dhparam /etc/ssl/dhparam.pem;
  
=== Esimerkki ===
+
=== Esimerkki === <!--T:106-->
  
 +
<!--T:107-->
 
<pre>
 
<pre>
 
   server {
 
   server {
Rivi 338: Rivi 430:
 
</pre>
 
</pre>
  
 +
<!--T:108-->
 
Uudelleenohjaus HTTP -> HTTPS
 
Uudelleenohjaus HTTP -> HTTPS
  
   return        301 https://$server_name$request_uri;
+
   <!--T:109-->
 +
return        301 https://$server_name$request_uri;
  
== Uudelleenohjaus -> index.php ==
+
== Uudelleenohjaus -> index.php == <!--T:110-->
  
   location / {
+
   <!--T:111-->
 +
location / {
 
         if (-f $request_filename) {
 
         if (-f $request_filename) {
 
             expires 30d;
 
             expires 30d;
Rivi 354: Rivi 449:
 
         }
 
         }
  
== Lisätietoa ==
+
== Lisätietoa == <!--T:112-->
  
 +
<!--T:113-->
 
https://www.omaserveri.info/virtuaalipalvelimen-luominen-nginxissa/
 
https://www.omaserveri.info/virtuaalipalvelimen-luominen-nginxissa/
  
 +
<!--T:114-->
 
https://www.digitalocean.com/community/tutorials/understanding-the-nginx-configuration-file-structure-and-configuration-contexts
 
https://www.digitalocean.com/community/tutorials/understanding-the-nginx-configuration-file-structure-and-configuration-contexts
  
== Lähteet ==
+
== Lähteet == <!--T:115-->
  
 +
<!--T:116-->
 
http://wiki.nginx.org/Install
 
http://wiki.nginx.org/Install
  
 +
<!--T:117-->
 
https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04
 
https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04
  
 +
<!--T:118-->
 
https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html
 
https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html
  
 +
<!--T:119-->
 
https://bjornjohansen.no/optimizing-https-nginx
 
https://bjornjohansen.no/optimizing-https-nginx
  
 
</translate>
 
</translate>

Versio 8. lokakuuta 2015 kello 16.10

Muut kielet:
suomi

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.

Asennus

Asennetaan Nginx 1.2

aptitude install nginx

Käynnistä palvelu

 service nginx start

Jos haluat uudemman version (Nginx 1.8) lisää source.list tiedostoon dotdeb repot

 nano /etc/apt/source.list
deb http://packages.dotdeb.org wheezy all
deb-src http://packages.dotdeb.org wheezy all

deb http://packages.dotdeb.org wheezy-php56 all
deb-src http://packages.dotdeb.org wheezy-php56 all

Sulje ja tallenna. Lisää lisäksi GnuPG avain

 wget https://www.dotdeb.org/dotdeb.gpg
 sudo apt-key add dotdeb.gpg

Tämän jälkeen aja komento

 aptitude update && aptitude dist-upgrade && aptitude install nginx

Tarkista Nginx versio

 nginx -v

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 ja purkaa pakattu gz tiedosto.

 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

Asenna PHP5-fpm paketti pakettihallinnasta

 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-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:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';

DH Param

Luo DH Param. Tämä vie hetken:

 $ openssl dhparam 2048 -out /etc/ssl/dhparam.pem

Avaa Nginx konfigurointi tiedosto sites-enabled hakemistosta ja liitä SSL konffeihin:

 ssl_dhparam /etc/ssl/dhparam.pem;

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 '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:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
 
   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/

https://www.digitalocean.com/community/tutorials/understanding-the-nginx-configuration-file-structure-and-configuration-contexts

Lähteet

http://wiki.nginx.org/Install

https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04

https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html

https://bjornjohansen.no/optimizing-https-nginx

Mainos / Advertisement: