Fastcgi, Nginx vs. Apache "Móka"!

Eszembe jutott, hogy ebben a hónapba nem szopattam magam, szóval nekiálltam fastcgi reszelgetésnek.
úgy fél óra reszelgetés után van frankón nginx-en php-m, zsír. Csak 2 dolog nem megy(en).

1, Kéne nekem az Apache-féle MultiViews cucc, de azt nem sikerült nginx-re reszelnem.
2, Kéne nekem az Apache-féle alias cucc, de azt sem sikerül valamiért megoldanom. Folyton 404-et dob a /alias-ra, de ha a docroot-ja tartalmaz alias mappát, akkor jó. Na de nekem az úgy nem stimmel, hogy alias/public_html/alias, hogy legyen egy /alias-om...

1-t így csináltam:

try_files $uri.php $uri/ /index.html;

De ez is 404-ezik...

Az elsőt még csak csak tudnám nélkülözni, de a második nagyon bassza a csőröm...

Szerk: (2014-04-08)
Hozzászólásokban érkezett javaslatok, és kuglizás hatására reszeltem egy ilyet:

location /alias {
alias /alias/public_html;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
if ($fastcgi_script_name ~ /alias(/.*\.php)$) {
set $valid_fastcgi_script_name $1;
}
fastcgi_param SCRIPT_FILENAME $document_root$valid_fastcgi_script_name;
include fastcgi_params;
}
}

Ezzel megvan oldva az alias problematikája.

Hozzászólások

location /alias {
alias /az/aliasod/helye
}
ez nem jó?

// Happy debugging, suckers
#define true (rand() > 10)

Addig jó, míg csak ez van benne. De amint ráakarom venni, hogy ott is működjön fastcgi-vel, akkor megbolondul. ugyanúgy a /alias/public_html/alias/index.php-t akarja keresni... Ennek az okát tudom, csak a megoldása nem tiszta.

--
Fontos! Ha berágok, nem feltétlen személyed ellen szól...
openSUSE 13.1 x86_64

location ~ ^/~([^/]+)/(.+\.php)$ {
    if (!-f /home/$1/public_html/$2) {
        rewrite ^ 404;
    }
    alias /home/$1/public_html/$2;
    fastcgi_pass unix:/var/run/php-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $request_filename;
    include fastcgi_params;
}

location ~ ^/~(.+?)(/.*)?$ {
     alias /home/$1/public_html$2;
     index  index.html index.htm index.php;
     autoindex on;
}

És ezt még egész előre a server szekcióba (persze a speckó igényeid szerint módosítva).

Hmm.. Nem is rossz.

De közben reszeltem egy ilyet:

if($fastcgi_script_name ~ /alias(/.*\.php)$) {
set $valid_fastcgi_script_name $1;
}

fastcgi_param  SCRIPT_FILENAME  $document_root$valid_fastcgi_script_name;

--
Fontos! Ha berágok, nem feltétlen személyed ellen szól...
openSUSE 13.1 x86_64

Az nginx eseteben siman server contextbe rakjuk az egeszet, es koszonjuk, Apache eseteben meg globalisan letiltjuk a userdir alapertelmezeset, es virtualhost contextben engedelyezzuk. Nem bonyolult, csak egy picit utana kell olvasni.

Virtualhost kontextusban mar elfer a dolog, mert azt lehet korlatozni. De egy random oldal alol ne legyen mar tamogatottt az userdir hasnzalata, tehat ne lehessen mar egy http://index.hu/~uzsolt/lofasz.html -t elengedni.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

Az nginx eseteben siman server contextbe rakjuk az egeszet

Én nem azt csináltam? Ha esetleg egy idevágó linkkel megdobnál, megköszönném.

Nem bonyolult, csak egy picit utana kell olvasni.

Tudom, de annyira nem érdekel a dolog, nálam csak az a lényeg, hogy működjön a laptopomon.

Felesleges a userdiren rugózni, (én legalábbis) sehol nem használok ilyet. Van ahol alias-ként megadok hasonlóan ~izé mappákat, de cél sosem egy user mappája.
Kivéve a fejlesztői gépemen, ott tényleg a user-hez van kötve, de csak mert felesleges lenne mindig su-val másolgatni a webszerver gyökérbe, ha fejlesztek valamit.

--
Fontos! Ha berágok, nem feltétlen személyed ellen szól...
openSUSE 13.1 x86_64

" csak mert felesleges lenne mindig su-val másolgatni a webszerver gyökérbe"

(confused) miert kellene a webszerver gyokerebe su-val masolgatni? Nem ertem. Fogod, itk, a nevedben fut a vhost, es a sajat usereddel tudsz a webszerver gyokerebe masolgatni. Biztos csak en nem ertem, ez miben bonyolultabb. PHP-FPM eseteben a dolog hasonlo bonyolultsagu, felhuzol egy pool-t ami a te nevedben fut, rakonfiguralod az nginx-et,es koszonjuk. Az FPM pool raadasul nem is vhosthoz kotott, egy FPM akar 4-5 vhostot is kiszolgalhat.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

Pont azért álltam neki PHP-FPM-mel szopni, hogy lehessen az én nevemben is docroot, amit a szerverprogram is képes írni-olvasni.

Eddig az volt a gond, hogy mikor lefejlesztettem valamit, akkor bekellett másolni a docrootba, de az a webszerver nevén kellett legyen, és user nem írhatott bele. (Most ne térjünk ki rá, hogy + acl jogoktól miért hányta el magát a webszerver.)
A home-omon belüli public_html mappát aliasként adtam, akkor meg simán tudtam írni bele, és érdekesmód az + acl jogoktól sem hányta össze magát ez a szerencsétlenség...

Éles szerveren pedig nincs ftp-m, sftp-vel rámolom fel a cuccot. Az ottani docrootba pedig szint úgy nem tudok userként írni, ezért rootként kell be sftp-zni. Biztos létezik rá megoldás, de nem volt kedvem annyit szopni. Valamiért, ha a docrootba a webszerver usere mellé teszek az én useremre vonatkozó acl jogokat, akkor ő nem hajlandó működni, és "access denied" van keményen.

szerk: Szintúgy nem elegáns az, hogy a nagyvilág is irkálhat a docroot-ba, szóval ez az opció kimaradt.

--
Fontos! Ha berágok, nem feltétlen személyed ellen szól...
openSUSE 13.1 x86_64