Skocz do zawartości
Miłosz

Apache 2.4 + php-fpm + 403 error

Polecane posty

Jest sobie apache 2.4.3 z modułem proxy i php-fpm:

 

ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/$1

 

Wszystko fajnie sobie działa.. ale.. Coś nie chce trybić błąd 403 (Forbidden). Zamiast niego pojawia się File not found. Tak jakby proxy z fpm wymuszało posiadanie index.php w katalogu. A no właśnie nie ma być tam indexu, tylko jest htaccess ze zdefiniowanym 403:

 

ErrorDocument 404 /adm/404.html

ErrorDocument 403 /adm/403.html

 

404 działa bez problemu i wyświetla się zawartość pliku html.

Ma ktoś jakiś pomysł jak zmusić go do wyświetlania 403?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Takie rozwiązanie trybi. Ale :D

Jeśli do katalogu wróci plik index.php to dobrze by było jakby się otworzył.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nie wiem jak to dokładnie wygląda, ale może zrozumiesz co kombinuję:

RewriteCond %{REQUEST_FILENAME} -f
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/$1
Z Apache nie pomogę, bo od dawna przekonałem się do nginx'a, ale z tego co pamiętam z przerabianych .htaccess'ów na nginx'owy config to taka kombinacja sprawdza czy jest plik i dopiero wtedy robi coś dalej.

 

File not found. to błąd php-fpm'a, czyli tak jakby Apacz zapominał już o sprawdzaniu czy plik istnieje.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

 

 

ale z tego co pamiętam z przerabianych .htaccess'ów na nginx'owy config to taka kombinacja sprawdza czy jest plik i dopiero wtedy robi coś dalej

To jest prawda, ale tylko częściowa prawda. RewriteCond oczywiście sprawdzi ci, czy plik istnieje...

... ale jest to metoda stricte mod_rewrite, czyli w tym kontekście możesz użyć co najwyżej RewriteRule.

 

 

 

Z Apache nie pomogę, bo od dawna przekonałem się do nginx'a

Właśnie widać ;) Niestety, RewriteCond to nie jest stuprocentowy odpowiednik nginx'owego location.

W nginx tam możesz robić sobie praktycznie cały config, a tu - tylko przepisywać adresy.

 

A czemu tak się dzieje? Wyjaśnienie jest bardzo proste. Uaktywnienie w danym kontekście proxy powoduje, że serwer przekazuje pasujące żądania do backendu [dowolnego - czy to fcgi, czy innego hosta http, czy serwer ftp...) z automatu (bo i czemu miał by to analizować lokalnie, skoro jest tylko PROXY?). Backend próbuje otworzyć plik i twierdzi, że nie bardzo może to wykonać, bo ta lokalizacja nie istnieje. A sam serwer próbuje go otworzyć dlatego, że analizując DirectoryIndex wybiera pierwszy dostępny zasób. A że tu tym zasobem jest odwołanie do proxy to cóż... Staje się on dostępny ;)

 

Warto też dodać, że kolejne wystąpienia DirectoryIndex w konfiguracji... doklejają wartość do poprzednich.

Żeby wyzerować listę, trzeba jawnie ustawić na disabled (i ewentualnie od nowa po tym zbudować listę indeksów).

 

Jeśli chcesz sobie zablokować jedynie indeksowanie, a zapewnić możliwość, że jak plik z indeksem się pojawi, to...

... po prostu stwórz teraz pusty index.php ;)

  • Upvote 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Czyli w Apache ProxyPass powoduje, że Apache już nic nie sprawdza, nic nie robi tylko forwarduje. W takim raziem @autor musi inaczej odwoływać się do PHPa.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Może ktoś już wykombinował jak ten problem obejść? :)

 

#edit

projekt z fastcgi jest dalej rozwijany: https://github.com/ByteInternet/libapache-mod-fastcgi

 

kompiluje się i działa z apachem 2.4 bez problemu

 

Także, że na chwilę obecną użyję fastcgi :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość nrm

"rozwijany" to trochę na wyrost bo w ciągu 2 lat cisza (a 2 poprawki kosmetyczne). ;)

 

Z kolei w najnowszym Apache w końcu są 2 istotne fixy (m.in. w końcu proxy po socketach) ale dalej inne istotne, od lat zgłaszane błędy leżą odłogiem. Tak się zarzekali, że deweloperka przyspieszy a jest taka sama bryndza jak była wcześniej.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ale zrobili fix na kompilacje z 2.4 ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×