Nginx + nette nefunguje. Vždy jen „File not found.“

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Dark
Člen | 5
+
+1
-

Ahoj,
forum jsem zkoušel prohledat, nějaké věci zkoušel, ale pořád se nedaří. Na apache2 stránka jede, ale na nginxu pouze „File not found.“

Neměl by tu prosím někdo nějakou radu? Děkuji :)

Nastavení vhostu:

server {
	listen 80;
	listen [::]:80;
	server_name is.dayz-sa.cz www.is.dayz-sa.cz;

	root /var/www/is.dayz-sa.cz/public_html;
	access_log /var/www/is.dayz-sa.cz/logs/access.log;
	error_log /var/www/is.dayz-sa.cz/logs/error.log;

	index index.html index.php;
	client_max_body_size 1024M;

	try_files $uri $uri/ /index.php?$args;

	location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;

        fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
        fastcgi_param PATH_TRANSLATED $document_root/$fastcgi_path_info;
        fastcgi_param PATH_INFO $fastcgi_path_info;
	}
}

Editoval Dark (15. 1. 2015 23:07)

Tomáš Kolinger
Člen | 136
+
0
-

První co mě napadne jsou ty podivně složený cesty pro PHP, co tě k tomu vede? Celkově nějak nechápu, proč se lidi furt snaží tunit ty cesty, když to funguje s defaultní konfigurací…

Zkus vyhodit všechny tyhle fastcgi_param a zkontroluj tvůj /etc/nginx/fastcgi_params, dotdeb má u nginx 1.6 defaultně toto:

fastcgi_param   QUERY_STRING            $query_string;
fastcgi_param   REQUEST_METHOD          $request_method;
fastcgi_param   CONTENT_TYPE            $content_type;
fastcgi_param   CONTENT_LENGTH          $content_length;

fastcgi_param   SCRIPT_FILENAME         $request_filename;
fastcgi_param   SCRIPT_NAME             $fastcgi_script_name;
fastcgi_param   REQUEST_URI             $request_uri;
fastcgi_param   DOCUMENT_URI            $document_uri;
fastcgi_param   DOCUMENT_ROOT           $document_root;
fastcgi_param   SERVER_PROTOCOL         $server_protocol;

fastcgi_param   GATEWAY_INTERFACE       CGI/1.1;
fastcgi_param   SERVER_SOFTWARE         nginx/$nginx_version;

fastcgi_param   REMOTE_ADDR             $remote_addr;
fastcgi_param   REMOTE_PORT             $remote_port;
fastcgi_param   SERVER_ADDR             $server_addr;
fastcgi_param   SERVER_PORT             $server_port;
fastcgi_param   SERVER_NAME             $server_name;

fastcgi_param   HTTPS                   $https if_not_empty;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param   REDIRECT_STATUS         200;

A s tím definuješ .php lokaci takto:

try_files $uri =404;

include fastcgi_params;
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_pass unix:/var/lib/php5-fpm/www.sock;

A je to na 100% funkční, běží mě s tím spoustu virtualhostů a nikdy žádný file not found nebylo. Zkus použít stejený fastcgi_params ale radši se ujisti, že máš podobnou verzi nginx.

Editoval Tomáš Kolinger (15. 1. 2015 23:36)

Dark
Člen | 5
+
0
-

Předem děkuji za odpověď.
Bohužel ani toto řešení mi nefunguje. Parametry jsem promazal, nginx je z dotdeb a nastavení je totožné.

Tomáš Kolinger
Člen | 136
+
0
-

Tak to musíš mít problém ještě někde jinde… Zkoušel si vypnout/zapnout cgi.fix_pathinfo v php.ini? Každopádně výchozí konfigurace dotdebu funguje, mám to hned na několika strojích a nikdy jsem s cestama problém neměl.

Dark
Člen | 5
+
0
-

Pokud vypnu cgi.fix_pathinfo, tak dostanu „No input file specified.“
Zkoušel jsem teď čístou instalaci nginxu, jen s tím, že jsem změnil

try_files $uri $uri/ =404;

(háže 404) na

try_files $uri $uri/ /index.php?$args;

Omlouvám se s tímto nemám moc zkušeností, tak to je o to horší :-)

Editoval Dark (16. 1. 2015 13:45)

kudlajz
Člen | 70
+
0
-

JA to mam nastaveno takhle:

listen       80;
        server_name  localhost.example;
        root /usr/www/example/www;
        index index.php;

        location / {
                try_files $uri $uri/ /index.php?$args;
        }

        location ~ \.php$ {
                        include         fastcgi_params;
                        fastcgi_pass    127.0.0.1:9000;
                        fastcgi_index   index.php;
                        fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
                        fastcgi_param   PATH_INFO $fastcgi_path_info;
                        fastcgi_param   PATH_TRANSLATED $document_root$fastcgi_path_info;
                        fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
                }
Dark
Člen | 5
+
0
-

Už je mi to trapné, ale ani to nefunguje… Nemusí se nastavovat kvůli nginxu něco i v nette?

Tomáš Kolinger
Člen | 136
+
0
-

Ne

trejjam
Backer | 65
+
0
-

Zkus si přidat do konfigu

autoindex on;

a podívej se, zda jsi ve stejné složce jako si myslíš že jsi. Index.php bývá ve složce www, tedy je třeba upravit root.

Dark
Člen | 5
+
+1
-

takže, když jsem dal root až do www, tak to jde. Děkuju za radu ale stejně je mi divné, že to nešlo, když jsem tam přistupoval domena/www/neco/. Nevadí moc děkuju za radu :)

premek_k
Člen | 172
+
0
-

Ahoj pánové.
Už několik dní zápasím s rozchozením nginx na macOs, vyzkoušel jsem vše, co se tady na foru píše, prohledal jsem internet, ale nemohu s tím hnout.

Vesměs mi už vše šlape, až na routy mimo HomePage:default, resp. /www/index.php. To znamená, že mainpage projektu se mi načte (nebo i třeba Adminer funguje v pohodě), nicméně jakýkoliv odkaz někam „hlouběji“ do aplikace mi vrací 404.

V latte tvořím odkaz takto:

<a n:href="HomePage:newCommitment">...</a>

Vyrenderovaný odkaz vypadá takto:

<a href="/publiccommitment/www/homepage/new-commitment">...</a>

ACCESS_LOG:

127.0.0.1 - - [04/Mar/2015:15:27:57 +0100] "GET /publiccommitment/www/ HTTP/1.1" 200 87643 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/600.3.18 (KHTML, like Gecko) Version/8.0.3 Safari/600.3.18" "-"

127.0.0.1 - - [04/Mar/2015:15:27:59 +0100] "GET /publiccommitment/www/homepage/new-commitment HTTP/1.1" 404 372 "http://localhost/publiccommitment/www/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/600.3.18 (KHTML, like Gecko) Version/8.0.3 Safari/600.3.18" "-"

ERROR_LOG:

2015/03/04 15:27:50 [error] 1276#0: *132 open() "/Users/Admin/Development/www/publiccommitment/www/homepage/new-commitment" failed (2: No such file or directory), client: 127.0.0.1, server: localhost, request: "GET /publiccommitment/www/homepage/new-commitment HTTP/1.1", host: "localhost"

2015/03/04 15:27:59 [error] 1276#0: *131 open() "/Users/Admin/Development/www/publiccommitment/www/homepage/new-commitment" failed (2: No such file or directory), client: 127.0.0.1, server: localhost, request: "GET /publiccommitment/www/homepage/new-commitment HTTP/1.1", host: "localhost", referrer: "http://localhost/publiccommitment/www/"

Je mi jasné, že ta 404 je „oprávněná“, jelikož cesta /Users/Admin/Development/www/publiccommitment/www/homepage/new-commitment skutečně neexistuje, ale nemohu přijít na to, v čem konkrétně je ten problém.

Umí mi někdo poradit?
Přemek