jurchiks Posted May 2, 2013 Report Share Posted May 2, 2013 (edited) Ir saits, kuram jākačā produktu bildes no citiem saitiem un jāsaglabā lokāli. Patreiz uz mana dev box ar apache ir uztaisīts tā: request iet us /images/products/someId/md5hash.jpg someId = cita saita ID no datubāzes (vienkārši grupēšanai, lai nav 100k+ bilžu vienā folderī) md5hash - destination file name (reāli hash no oriģinālā attēla url, lai nebūtu tā, ka vairākiem produktiem viena bilde, bet es kačāju un saglabāju katram atsevišķi) Ja šāds fails neeksistē, redirekto uz /images/products/index.php, kurš nokačā oriģinālo image, konvertē un saglabā ar šādu file name. .htaccess saturs /images/products/ mapē: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !index.php RewriteRule .* ./index.php [L] Viss strādā perfekti - faili kačājās, redirekti notiek, viss super. Bet tagad man tas pats jāpanāk uz nginx, un te sākās problēmas. Mēģināju pavisam vienkārši, tāpat kā apache (izņemot script_filename): location ~* /images/products/ { if (!-f $request_filename) { rewrite .* /images/products/index.php; } } Nestrādā, rewraits nenotiek, met 404, un vistrakākais ir tas, ka piekļūstot index.php vai .htaccess, tie atverās kā plain text! Mēģināju arī "location ~* /images/products/([0-9]+)/([a-zA-Z0-9]+)\.jpg$" un ar vairākiem IFiem: location ~* /images/products/([0-9]+)/ { set $redir 0; if (!-f $request_filename) { set $redir 1; } if ($request_filename ~ \.jpg$) { set $redir 2$redir; } if ($redir = 21) { rewrite .* /images/products/index.php; } } Pēdējais mēģinājums, kurš it kā būtu vispareizākais: location ~* /images/products/ { try_files $uri /images/products/index.php; // vai vienkārši index.php, nezinu gan, vai tas strādā } nekas nestrādā (un jā, es katru reizi izpildīju komandu `service nginx reload`). Dabljū tī ef is this un ko tam endžinam vajag, lai viņam pielektu, ko es gribu? P.S. es domāju, ka tāpat ir skaidri saprotams, ka ar nginx man saskarsme maza un maz rubīju, tāpēc kaut kādus apvainojumus varat uzreiz paturēt pie sevis, labāk nevienam nepaliks. Edited May 2, 2013 by jurchiks Quote Link to comment Share on other sites More sharing options...
marrtins Posted May 2, 2013 Report Share Posted May 2, 2013 Apmēram šādi? server { listen 127.0.0.1:80; server_name page.lv www.page.lv; root /www/page.lv/public; location /index.php { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME /www/page.lv/public$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_script_name; include /usr/local/nginx/conf/fastcgi_params; break; } location / { rewrite ^(.+)$ /index.php$1?$query_string? last; break; } location ~* \.(gif|jpg|png|ico|js|css|jpeg|avi|wmv|exe|txt|mp3|zip|swf|flv|svg)$ { if (-f $request_filename) { expires 7d; } } } Quote Link to comment Share on other sites More sharing options...
jurchiks Posted May 2, 2013 Author Report Share Posted May 2, 2013 (edited) Tur nav pilnīgi nekā saistīta ar manu problēmu... Kur ir redirekts uz index.php tieši mapē /images/products/? Man ir vairāki index.php, pārējie strādā normāli, bet tie redirekto unconditionally. Edited May 2, 2013 by jurchiks Quote Link to comment Share on other sites More sharing options...
marrtins Posted May 2, 2013 Report Share Posted May 2, 2013 Es tev vnk pārtulkoju tavu .htaccess Quote Link to comment Share on other sites More sharing options...
e-remit Posted May 2, 2013 Report Share Posted May 2, 2013 Kādu automātisko tūli mēģināji? http://winginx.com/htaccess Quote Link to comment Share on other sites More sharing options...
jurchiks Posted May 2, 2013 Author Report Share Posted May 2, 2013 @e-remit - tavs tūlis man izmeta šo: location / { if (!-e $request_filename){ rewrite ^(.*)$ /index.php break; } } nomainīju location uz "/images/products/" un "/index.php" uz "/images/products/index.php" (mēģināju arī vienkārši "index.php" bez slash) - nestrādā. @marrtins - acīmredzot neizlasīji visu tekstu, jo tas .htaccess ir tikai /images/products/ folderim. Quote Link to comment Share on other sites More sharing options...
marrtins Posted May 2, 2013 Report Share Posted May 2, 2013 Es izlasīju, domāju nomainot location vajadzētu visam strādāt. Quote Link to comment Share on other sites More sharing options...
jurchiks Posted May 2, 2013 Author Report Share Posted May 2, 2013 Diemžēl nestrādā, tāpēc jau rakstu šeit. Otrdien uzrakstīju par šo problēmu stackoverflow un līdz šim brīdim nevienas atbildes... Maybe nepareizo saitu izvēlējos, bet parasti moderatori pārvietotu. Mēģinu visu pēc kārtas, absolūti nekas nestrādā... Galvenais, ka nav nekādas informācijas, kāpēc tieši nestrādā, error logā ir vienīgi "file not found". Mēģināju noņemt IFu un atstāt pliku redirect - nenotiek, 404. This shit just blows my mind. Quote Link to comment Share on other sites More sharing options...
marrtins Posted May 2, 2013 Report Share Posted May 2, 2013 Iedod root - safiksošu :) Quote Link to comment Share on other sites More sharing options...
jurchiks Posted May 3, 2013 Author Report Share Posted May 3, 2013 (edited) Nespīd, tas ir production serveris ar daudziem citiem saitiem uz tā. + nav mans, es tikai 2 saitus tur činīju. Tikko pamēģināju vēl vienu lietu - location ~ /images/products/ { rewrite .* /images/products/index.php; } Pie tam index.php pirmā līnija "die('this happened');". Izsaucu /images/products/ - 500. erors. error logā ieraksts - "rewrite or internal redirection cycle while processing "/images/products/index.php". Noņemu ~ simbolu, reload, izsaucu urli - 403. erors. WTF? Fails eksistē un permissions ir ok, viņam taču vajag redirektot, vai ne tā? Edited May 3, 2013 by jurchiks Quote Link to comment Share on other sites More sharing options...
Pats Toms Posted May 3, 2013 Report Share Posted May 3, 2013 Tu varētu parādīt kāds tev tas konfigs šobrīd izskatās, t.i., ko tu uztaisīji pēc marrtins komentāra. Quote Link to comment Share on other sites More sharing options...
jurchiks Posted May 3, 2013 Author Report Share Posted May 3, 2013 (edited) Par vēlu, jau atradu problēmu. Visu čakarēja šis (cits location zem tā, kuru visu laiku mocīju): location ~ /images/ { } Noņēmu ~ un viss aizgāja :/ Tāda nervu čakarēšana viena stulba simbola dēļ... Gala rezultāts: location /images/ { } location /images/products/ { try_files $uri /images/products/index.php; } Un strādā normāli. Edited May 3, 2013 by jurchiks Quote Link to comment Share on other sites More sharing options...
marrtins Posted May 3, 2013 Report Share Posted May 3, 2013 Jā, tā gadās ar to nginx, ka kāds cits location nograuj. Vispār man baisi netīk tā nginx konfigošana. Tie if ir nedataisīti (to nevar bāzt tu, šito nevar deklarēt te vai izmantot citur), location rulles sarežģītas, izpildes secība arī pēc mistiskiem noteikumiem... Quote Link to comment Share on other sites More sharing options...
jurchiks Posted May 3, 2013 Author Report Share Posted May 3, 2013 Sucks, but performance requires sacrifice, I guess. Man jau arī baigi nepatīk, ka ar nginx nav iespējams visu, izņemot virtual host configu, paturēt saita failos, visi šie rewraiti u.c. maģija obligāti jāliek webservera failos. Tas, manuprāt, ir vēl lielāks mīnuss nekā šādi location, jo ar šiem tik daudziem nav jāsastopās, bet ar configiem visi čakarējas. Quote Link to comment Share on other sites More sharing options...
marrtins Posted May 3, 2013 Report Share Posted May 3, 2013 Man šķiet, kaut kur manīju moduli, kas lasa per-direktory konfigus. Kāds tam statuss un cik dataisīts - nav ne jausmas, neesmu mēģinājis. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.