Prispevky v kategorii: ‘Apache tipy’

Kontrola domény ještě před změnou name serverů

Pokud převedete již běžící doménu z jiného serveru na váš server, a chcete se přesvědčit zda je vše ok ještě před změnou dns, existuje několik cest jak toto provést.

První cestou, pokud používáte Windows XP je že editujete soubor
c:\WINDOWS\system32\drivers\etc\hosts a přidáte do něj:

123.123.123.123    domena.cz
123.123.123.123    www.domena.cz
123.123.123.123    jinasubdomena.domena.cz

kde 123.123.123.123 je IP vašeho serveru.
Poté je nutné restartnout web browser, a doména vám bude resolvovat na váš server
(pouze ale na vašem počítačim, ne pro okolné svět).
Doporučuji tento záznam časem odstranit, předejdete případným budoucím problémům.

Další možností je přidělit doméně nějakou unikátní IP adresu a jednoduše se na ní odkázat v prohlížeči.

Další možností je v Apachi změnit: UserDir disable na UserDir enable
a nastavit UserDir public_html, kde public_html je DocumentRoot adresář pro vaše domény. Někdo používá public_html, jiný html, www_root atd…
Pak stačí v prohlížeči zadat IP adresu serveru + username ve formátu:


http://123.123.123.123/~username

A zobrazí se obsah domény uživatele „username“.

admin Apache tipy

Aktivace SSL + vytvoření SSL certifikátu

Pokud chcete využívat šifrovaný přenos je potřeba vytvořit SSL certifikát pro danou doménu.

Předem je potřeba znát tyto údaje:

  • název subdomény (např:  secure, www, protected atd.)
  • Název země (dvoupísmenný kód země)
  • Stát nebo provincie
  • Město
  • Název organizace
  • Část organizace (např: divize, sekce) (nepovinný)
  • emailová adresa

Dále je potřeba mít na serveru nainstalovaný mod_ssl apache modul.

yum install mod_ssl

Poté editujte soubor /etc/sysconfig/httpd a změňte direktivu

#OPTIONS=

na

OPTIONS="-DSSL -k start"

Tímto zajistíte že apache bude nyní startovat s SSL podporou.

Vygenerování SSL klíče:

openssl genrsa -des3 -out subdomena.domena.com.key 1024
pass phrase = domena

Klíč máme hotový, je čas vytvořit csr (certificate request) soubor:

openssl req -new -key subdomena.domena.com.key -out subdomena.domena.com.csr
pass phrase = domena
common name = cely format te domeny tzn. subdomena.domena.com
password = zde stisknout pouze enter
company = zde stisknout pouze enter

Dalším krokem je kontrola údajů:

openssl req -noout -text -in subdomena.domena.com.csr

Nyní zkopírujete vnitřek souboru  subdomena.domena.com.csr a použijete jej pro vygenerování certifikátu u cert. společnosti.

Na disku vytvoříte soubor subdomena.domena.com.crt a vložíte do něj vygenerovaný certifikát.

Nyní je potřeba odblokovat klíč, aby se vás to při každém restartu apache neptalo na heslo.

mv subdomena.domena.com.key subdomena.domena.com.key_old
openssl rsa -in old.key -out subdomena.domena.com.key
pass phrase = domena

Nyní už jen nakopírujete vytvořené subory do příslušných adresářů v apache konfiguraci, např:

/etc/httpd/conf/ssl.crt/subdomena.domena.com.crt
a
/etc/httpd/conf/ssl.key/subdomena.domena.com.key
a do nastavení virtual hostu přidáte:

<IfDefine SSL>
  <VirtualHost 123.123.123.123:443>
    ServerName subdomena.domena.com
    .....předchozí údaje +
    SSLEngine On
    SSLCertificateFile /etc/httpd/conf/ssl.crt/subdomena.domena.com.crt
    SSLCertificateKeyFile /etc/httpd/conf/ssl.key/subdomena.domena.com.key
  </VirtualHost>
</IfDefine SSL>

Důležitá je také unikátní IP adresa pokud na serveru budete provozovat více domén s SSL certifikátem.

admin Apache tipy

Směrování návštěvníka na určitou URL podle země/státu

Cílem tohoto příspěvku je ukázat jak se dá návštěvník přesměrovat na určitou adresu nebo zakázat přístup na stránky podle lokace návštěvníka.  Například nepřejete-li si aby vaše stránky navštěvovali návštěvníci z Indie nebo Číny, tak jim zakážete přístup nebo je přesměrujete na jiné stránky.

Ke zprovoznění tohoto je potřeba nainstalovat na server balíčky:
GeoIP GeoIP-data a mod_geoip.

Postup pro Fedora Core, CentOS distribuce:

yum install GeoIP GeoIP-data mod_geoip

Pokud budete kompilovat ze zdroje je potřeba stáhnout balíčky: GeoIP a mod_geoip zkompilovat GeoIP, pak jít do rozbaleného adresáře mod_geoip a spustit:

/cesta/k/apxs -cia -I/usr/local/include -L/usr/local/lib -lGeoIP
/cesta/k/mod_geoip_1.2.9/mod_geoip.c

kde -I/usr/local/include je cesta k souboru GeoIP.h a -L/usr/local/lib je cesta k libGeoIP knihovně.

Po úspěšném zkompilování modulu pokud by se objevila chybová hláška, je potřeba editovat soubor /etc/ld.so.conf a přidat do něj cestu k modulu (pokud chybí) pravdepodobne: /usr/local/lib

a reloadnout příkazem:

/sbin/ldconfig

Dále je potřeba do apache konfigurace přidat řádky (pokud tam již nejsou):

GeoIPEnable On
GeoIPDBFile /cesta/k/GeoIP/GeoIP.dat

a do souboru .htaccess vložit řádky:

RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^CN$ [OR]
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^IN$
RewriteRule ^(.*)$ - [F, NC]

… kde CN = Čína a IN = Indie dle tohoto seznamu.

Aktuální GeoIP databáze se dá stáhnout zde.

admin Apache tipy

Antihotlink kód

Jednou z možností jak zabránit hotlinkování obrázků je vytvořit soubor .htaccess (jednoduchý textový soubor který začíná tečkou) a vložit do něj:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://([-a-z0-9]+.)?domena.com [NC]
RewriteRule .(jpg|jpeg|png|gif)$ - [NC,F]

Problém je ovšem s tím, pokud návštěvník stránky s hotlinkovaným obsahem má u sebe ve firewallu zaškrtlou volbu „stop trace referers“, antihotlink kód pro takovéhoto návštěvníka neplatí, a vy máte smůlu a musíte sáhnout po jiné metodě.
Dobrý nástroj pro kontrolu zda antihotlink funguje či ne, je tato stránka.

admin Apache tipy

Adresáře jako subdomény

Pokud potřebujete aby každý adresář uvnitř Document rootu byl zároveň subdoména, je potřeba učinit následující kroky:
- předně je potřeba povolit wildcards v dns záznamu pro danou doménu.
Do dns záznamu přidejte:

*    IN    A    123.123.123.123

- v nastavení virtual hostu vytvořte záznam:

ServerAlias *.domena.com domena.com

- nakonec přidejte tyto řádky do virtual hostu dané domény:

RewriteEngine On
RewriteCond  %{HTTP_HOST} !^www
RewriteCond  %{HTTP_HOST} ^([^.]+)
RewriteCond  %{DOCUMENT_ROOT}/%1 -d
RewriteRule  ^/(.*) %{DOCUMENT_ROOT}/%1/$1

Tímto nastavením zaručíte, že každý adresář bude zátoveň i subdoménou.

Například: /public_html/test bude zároveň http://test.domena.com

admin Apache tipy