Desavil 88 Zgłoś post Napisano Styczeń 25, 2015 (edytowany) Witam, nie chce mi działać żadne rewrite, które dotyczy plików statycznych, nie wiem gdzie popełniam błąd: location /widg { rewrite ^/widg/embded_([0-9]+)-([0-9]+).js?$ /widg/index.php?go=js&sid=$1&w=$2; rewrite ^/widg/image/preview.jpg$ http://domena.pl/preview.jpg redirect; } Nginx traktuje prawdopodobnie te: .js oraz .jpg jako pliki statyczne, gdyż zwraca że taki plik nie istnieje. Jak tylko zmienię: .js na np. .js2 to otwiera bez problemu. W jaki sposób mogę na nim jakoś wymusić, aby brał pod uwagę te regułki? Edytowano Styczeń 25, 2015 przez Desavil (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Misiek08 285 Zgłoś post Napisano Styczeń 25, 2015 Ogólnie spróbuj te regułki wyrzucić z lokacji. To oczywiście mała zmiana, ale czasami nginx jak się zapętla to nie lubi takich żądań, bo leci request -> location /widg -> rewrite z /widg do /widg. Udostępnij ten post Link to postu Udostępnij na innych stronach
Desavil 88 Zgłoś post Napisano Styczeń 25, 2015 (edytowany) Zadziałało. Czyli generalnie lepiej rewrite używać samo, bez location? Jeszcze taka jedna rzecz, jak ma się hierarchia w nginx? Wpisując w takiej kolejności i "wchodząc" do katalogu "jakiskatalog", plik PHP się pobiera. location ~ /jakiskatalog { allow x.x.x.x; deny all; } location ~ \.php$ { fastcgi_pass unix:/home/sites/domena.pl/tmp/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } Natomiast jak wpiszę w takiej kolejności, wykonuje się prawidłowo, ale "deny all" jest ignorowane: location ~ \.php$ { fastcgi_pass unix:/home/sites/domena.pl/tmp/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /jakiskatalog { allow x.x.x.x; deny all; } Edytowano Styczeń 25, 2015 przez Desavil (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Misiek08 285 Zgłoś post Napisano Styczeń 25, 2015 http://nginx.org/en/docs/http/ngx_http_core_module.html#locationi http://nginx.org/en/docs/http/request_processing.html masz opis przetwarzania żądań. Ogólnie regex łapie zawsze wcześniej (są wyjątki jak zawsze), Tutaj masz 2 lokacje tego typu i w sumie można by było zachaczyć albo osobną lokację pod php'y w tym katalogu albo if'a, ale if'y w nginx'ie są dziwne (nie zawsze działają jak by się wydawać mogło). Udostępnij ten post Link to postu Udostępnij na innych stronach
Desavil 88 Zgłoś post Napisano Styczeń 26, 2015 Hmm, nie umiem sobie z tym poradzić. A całe: location ~ \.php$ { ... } Lepiej umieszczać na końcu: server { }, czy na początku, jeszcze przed regułami rewrite/innymi location? Jak mogę ustawić, aby to dotyczyło wszystkich plików ".php" dla danego: server { }, bo jak widać w moim przypadku dla location, np. nie wykonywało się. A nie chciałbym sytuacji, że jakiś pliki PHP nagle się pobierają, zamiast interpretować przez parser. Udostępnij ten post Link to postu Udostępnij na innych stronach
Desavil 88 Zgłoś post Napisano Styczeń 28, 2015 Mógłbym prosić o pomoc? Udostępnij ten post Link to postu Udostępnij na innych stronach