Archive for the 'apache' Category

PHP fájlok védelme .htaccess-szel

Adott az alábbi felállás:

#apache rewriteunk a következő:

/minta => /modules/mod_minta.php
/minta/1 => /modules/mod_minta.php?q=1

## ki hogy vitelezi ki, teljesen lényegtelen, nézzen ki pl így:
RewriteRule ^minta(/.*)?$ /modules/mod_minta.php?q=$1 [QSA,L]

## $_GET['q'] feldolgozása phpban történik

Tehát a http://example.com/minta url hívásakor valójában a http://example.com/modules/mod_minta.php hívódik meg és hasonlóan a http://example.com/minta/1 esetén a http://example.com/modules/mod_minta.php?q=1

Tiltsuk le a következő linket: http://example.com/modules/mod_minta.php?q=1. Tehát a címsorba közvetlenül írva adjon valami hibát, de semmiképpen se futtassa le a mod_minta.php-t.

Több lehetőség van:

A modul(ok) elejére beírkáljuk:

 if(eregi('mod_minta.php', $_SERVER['REQUEST_URI'])) {
	header('HTTP/1.0 403 Forbidden');
	exit;
}

Egyszerű, és ronda megoldás. Minden mod_minta.php meghíváskor lefut, az esetek 99.9999%-ában feleslegesen.

Sokkal szebb megoldás a következő kettő…

  • Adjunk rá 404-es hibát:
    RewriteCond %{THE_REQUEST}      ^(GET|HEAD|POST)\ /modules/mod_minta\.php
    ## a mod_404.php kezeli a 404-et, ki hitte volna, ezt korábban már rewriteoltuk
    RewriteCond %{REQUEST_URI}  !^/modules/mod_404\.php$
    RewriteRule $ /404 [L]
    

    Ebben az esetben csak a mod_404.php-t tudja elérni közvetlenül, más nem. Ezt az egyet engedni kell, mert különben végtelen rekurzióba fut az apache. Ilyenkor a címsor nem változik, nincs redirect.

  • Dobjuk rá a 404-es oldalra
            RewriteCond %{THE_REQUEST}      ^(GET|HEAD|POST)\ /modules/mod_minta\.php
            RewriteRule $ /404 [R=301,L]
    

    Itt redirect lesz, ebben az esetben semmilyen file nem érhető el közvetlenül.

A kiprobált környezetben minden url rewriteolva van, tehát közvetlenül egy php file sincs meghívva. Ebben az esetben a két megoldás valamelyikét javasolt a rule-ok legvégére tenni, mert csak akkor jut el idáig a feldolgozás, ha korábban egy szabály sem illeszkedett. Ha ez sem illeszkedik akkor sima 404 a végeredmény.
A 404 megfejtése nagyon egyszerű:

ErrorDocument 404 /404
######
######
######
RewriteRule ^404$  /modules/mod_404.php [QSA,L]

Kiegészítve a RewriteCond-ot:

RewriteCond %{THE_REQUEST}      ^(GET|HEAD|POST)\ /modules/mod_.+\.php

Tehát az összes mod_-dal kezdődő php file közvetlen elérésének a tiltása ilyen. :)

Így készült egy videomegosztó

Csináltam egy videomegosztót. Nem nagy szám. Van már n db. De ha azt vesszük, hogy egy “garázsba” készült, magam készítettem, egyedül (programozás, server háttér), meetingek, milliók nélkül, akkor igen is nagy szám. Nekem az. Az oldal szinte fogad minden manapság menő viccformátumot (swf, pps, video, szöveg, képek). Statisztikák, érdekességek a képtelenség.hu technikai hátteréről. Read more »

Apache rewrite redirect

Két problémára kerestük a megoldást:

  • egy tárhelyre több domain van irányítva, de csak az egyik “él”, a többi domain irányítódjon a működőre
  • az oldalunkat csak “www” előtaggal érhetik el

Aztán rájöttünk, hogy ez a két probléma majdnem teljesen egyforma, de mégse. Read more »

Pár linux tool

A következőkben nem próbáljuk meg feltalálni a spanyol viaszt, csupán azoknak szeretnénk pár érdekes dolgot mutatni, akik épp’ ismerkednek a szerveroldali linux-szal.

Hamár linux és szerver, akkor kell ugye backup. A http://www.linux-backup.net/ erre mutat alternatívákat. Mentési stratégiák, backup scriptek tömkelegét olvashatjuk. Vegyük észre, a design-nál itt az információ százszor többet ér.

Szerverünk működőképességét monitorozhatjuk a Nagios-szal, mely e-mail vagy sms értesítést küld, ha a szerver pingje kritikus időt ért el, vagy ha a log partíciónk fogyóban van, vagy épp’ egy szolgáltatás nem működik. Nyilván célszerű egy külső gépről figyelni, illetve a szerverek keresztbefigyelése talán a legjobb megoldás.

A top parancsot mindenki ismeri, itt egy hasonló, az mtop. Az mtop a mysqlünket hivatott monitorozni hasonló formában, ahogy azt a top teszi. Realtime láthatjuk a lekérdezéseket. A perl alapú program a szokásos make && make install után használható. Ajánljuk.

Érdekes tool a phpsysinfo. Ezzel információkat nyerhetünk szerverünkről, load, eth, mount, temp, etc . A hőmérsékletek kinyeréséghez szükség van egy külső alkalmazásra, mi az mbmon-t használjuk.

Láthatjuk, hogy az mbmon daemon módban is futhat, így távolról telnet segítségével bármikor infót kaphatunk a feszültségekről, hőmérsékletekről, ventilátor fordulatszámokról. Hasznos része lehet a phpsysinfonak, hogy tud xml kimenetet, így bármilyen webalkalmazásunkba be tudjuk építeni… Működő példány itt: http://phpsysinfo.sourceforge.net/phpsysinfo-dev/?template=classic

Apache Log Analyzer 2 Feed

És akik nem tudnak feed nélkül élni, azoknak itt egy hasznos tool, amivel különböző szűrőfeltételek megadásával az apache logból rss-t generál. Így például azonnal értesülhetünk arról, hogyha a Google benézett a weboldalunkra, vagy valaki a személyes profilunkat nézi. More examples. Tesztünk során tetszett az alkalmazás, bár nem rotált log esetében (600MB) kicsit böszme az alkalmazás. Lassú. Ettől függetlenül ajánljuk!

Végezetül egy kis memória és cache úrítés linux alatt: echo 3 > /proc/sys/vm/drop_caches
http://www.linuxinsight.com/proc_sys_vm_drop_caches.html

Böngésző tiltása

Egy igen érdekes problémába futottunk. A Google sok olyant is meglát, amit igazán nem kéne neki, és ez teremthet kellemetlen helyzetet. Az történt, hogy egy tesztoldalt (ami egy fejlesztő szerveren van) az adott kulcsszóra a Google előbbre hozta, mint a valós, éles oldalt. Holott jó lenne, ha egyáltalán nem hozná. Tiltsuk ki hát a google-t. Read more »