NGINX uzyskuje dostęp do plików w złej ścieżce
Mam aplikację Codeigniter z następującą strukturą katalogów
<HOME>
|_ <web>
| |_<API>
| |_index.php
|_<admin>
Programiści mają plik index.html w katalogach, a. Pliki i usługi Codeigniter wdrażane przez programistów znajdują się w katalogach. Deweloperzy uzyskują dostęp do usług, dodając nazwę usługi do domeny w następujący sposób
http://mydomain/web/API/index.php/v1/GetRoles
http://mydomain/web/API/index.php/v1/GetRoles
Nazwa hosta jest skonfigurowana jako zmienna BASE PATH w pliku javascript.
Ta aplikacja jest obsługiwana przez firmę NGINX z systemem fast-cgi.
Chociaż ładują się strony HTML, żadne dane nie są ładowane. Dlatego próbowaliśmy uzyskać dostęp do funkcji, wpisując adres URL w przeglądarce (
http://mydomain/web/API/index.php/v1/GetRoles
http://mydomain/web/API/index.php/v1/GetRoles). Otrzymujemy błąd 404 Not Found. Dzienniki błędów zawierają następujące wpisy
2016/05/20 16:14:57 [error] 2127#0: *232 FastCGI sent in stderr: "Unable to open primary script:/home/myname/public_html/domainname/public/projectname/index.php (No such file or directory)" while reading response header from upstream, client: 14.141.163.46, server: mydomain.com, request: "GET/web/API/v1/get/Common/GetActivities HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "mydomain.com"
Serwer powinien szukać index.php w/home/myname/public_html/domainname/public/projectname/web/API/index.php, a nie szukać go w WEB ROOT.
Moja konfiguracja NGINX wygląda tak
server {
listen mydomain.com;
server_name mydomain.com;
root/home/myname/public_html/domainname/public/projectname; keepalive_timeout 70;
access_log/home/myname/public_html/domainname/log/access.log;
error_log/home/myname/public_html/domainname/log/error.log; gzip_static on; index index.html index.php; location/{
try_files $uri $uri//index.php?$query_string;
} error_page 404/404.html; error_page 500 502 503 504/50x.html;
location =/50x.html {
root/usr/share/nginx/www;
}# pass the PHP scripts to FastCGI server listening on the php-fpm socket
location ~ \.php$ {
#try_files $uri =404;
#fastcgi_pass unix:/tmp/php5-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_intercept_errors on;
}
}
Nie mogę zrozumieć, dlaczego NGINX szuka index.php w WEB ROOT zamiast ładować wszystko, co umieścimy w adresie URL. Czekamy na wiadomość od każdego, kto napotkał podobny problem.
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
1 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
który nie jest prawdziwym folderem. Możesz zrobić lokalizację
ukorzeniony
lub zmień ścieżkę żądania na