Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

Nginx + php5-fpm levert blanco pagina's op

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0Henk 'm!

  • Hakker
  • Registratie: augustus 2002
  • Laatst online: 12:26

Hakker

a.k.a The Dude

Topicstarter
Als eerste maar de pastbin geven.
nginx.conf : http://pastebin.com/3yseYPMD
php5-fpm www.conf http://pastebin.com/PG4JaNZj

Ik probeer op Ubuntu 14.04 Nginx 1.8.0 te draaien met php5-fpm 5.5.9 (standard versie in Ubuntu).
De Nginx heb ik zelf moeten compilen vanwege een rtmp module die ik erin wil hebben en Nginx werkt ook gewoon. Statische pagina's laat hij gewoon netjes zien het is met PHP dat is een 404 not found geeft.

php5-fpm laat geen error's zien in de logs en de enige log in nginx die ik te zien krijgt is dat het een 404 geeft in de access.log

in /var/run draait php5-fpm.sock ook gewoon.

Ik ben niet zo heel bekend met linux maar ondertussen na een paar dagen zo ongeveer 40 pagina's hebben doorgelopen met mogelijke oplossingen kom ik er niet meer uit. Als er een dappere ziel is die denkt het probleem te weten mag men ook een pm sturen om met teamviewer op de server te kijken, maar elke vorm van hulp zou fijn zijn.

Artificial Intelligence is no match for natural stupidity | Mijn DVD's | Mijn Games | D2X account: Hakker9


Acties:
  • 0Henk 'm!

  • mindcrash
  • Registratie: april 2002
  • Laatst online: 22-11-2019

mindcrash

Rebellious Monkey

Dit klinkt heel erg als missende fastcgi parameters. Zijn:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx;
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    $document_root$fastcgi_script_name;
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  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;


ergens aanwezig? (in fastcgi.conf bijvoorbeeld?). En zijn deze leesbaar voor de nginx user?

"The people who are crazy enough to think they could change the world, are the ones who do." -- Steve Jobs (1955-2011) , Aaron Swartz (1986-2013)


Acties:
  • 0Henk 'm!

  • CAPSLOCK2000
  • Registratie: februari 2003
  • Laatst online: 18:09

CAPSLOCK2000

zie teletekst pagina 888

Ik zie dat je logging overal hebt weggecommentaard. Mogelijk zie je daarom niks in de logs (ik durf niet te zeggen wat de defaults zijn). Het is geen directe oplossing voor je probleem maar meer laten loggen kan helpen.

This post is warranted for the full amount you paid me for it.


Acties:
  • 0Henk 'm!

  • Hakker
  • Registratie: augustus 2002
  • Laatst online: 12:26

Hakker

a.k.a The Dude

Topicstarter
dit is de default van Nginx zelf met uncomments voor de php een andere root en het stukje rtmp erbij maar that's it.

Ik weet niet wat de standard user van nginx is maar alle configs staan als root:root lijkt mij dus ook niet het probleem aangezien html pagina's wel gewoon laden en laat de fastcgi log nou helemaal niks zeggen behalve dan dat de config file test succesvol is gegaan

Artificial Intelligence is no match for natural stupidity | Mijn DVD's | Mijn Games | D2X account: Hakker9


Acties:
  • 0Henk 'm!

  • Blokker_1999
  • Registratie: februari 2003
  • Laatst online: 06:40
Het meest voorkomende bij deze combo is dat fpm het document niet weet te vinden door een foutieve parameter voor SCRIP_FILENAME. Ik geef daar meestal zelf de directory op ipv te vertrouwen op $document_root:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
server {
    listen       80;
    listen       [::]:80;
    server_name  localhost utopia.modpro.be;

    location / {
        root   /var/www/utopia;
        index  index.html index.htm index.php;

    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root           html;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index  index.php;
        include        fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  /var/www/utopia$fastcgi_script_name;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny  all;
    }
}

No keyboard detected. Press F1 to continue.


Acties:
  • 0Henk 'm!

  • Hakker
  • Registratie: augustus 2002
  • Laatst online: 12:26

Hakker

a.k.a The Dude

Topicstarter
OK het bleek een probleem met rechten te zijn. altijd leuk als je na een tijd weer begint met linux.

moest user www-data www-data aan de nginx.conf toevoegen om het werkend te krijgen. schijnbaar helpt het niet als nginx als root draait en de php5-fpm.sock als www-data.

[Voor 76% gewijzigd door Hakker op 11-05-2015 12:01]

Artificial Intelligence is no match for natural stupidity | Mijn DVD's | Mijn Games | D2X account: Hakker9


Acties:
  • 0Henk 'm!

  • init6
  • Registratie: mei 2012
  • Laatst online: 11:56
Je webserver wil je ook niet als root draaien. :)

Acties:
  • 0Henk 'm!

  • Blokker_1999
  • Registratie: februari 2003
  • Laatst online: 06:40
hoe start jij je nginx dan? In principe draait het master proces als root en spawnt deze (toch zeker bij een default config) zijn workers met de juiste gebruiker.

code:
1
2
3
4
5
6
root@utopia:~# ps faux | grep nginx
root      695476  0.0  0.0   7796   904 pts/0    S+   01:29   0:00  |       \_ grep nginx
root        2718  0.0  0.0  31120  1264 ?        Ss   Apr14   0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx       2719  0.0  0.0  31616  2356 ?        S    Apr14   0:00  \_ nginx: worker process
nginx       3121  0.0  0.0 472904 12780 ?        S    Apr14   0:00  \_ php-fpm: pool www
nginx       3122  0.0  0.0 472904 12780 ?        S    Apr14   0:00  \_ php-fpm: pool www


Is de gebruiker niet ingevuld in de config, dan default deze naar nobody uit veiligheidsoverweging.
http://nginx.org/en/docs/ngx_core_module.html#user

code:
1
2
3
4
syntax: user user [group];
default:    
user nobody nobody;
context:    main


bijkomend is een permissie probleem zichtbaar in de error log (kijk deze altijd als eerste na als het misloopt

code:
1
2
2015/05/12 07:38:19 [error] 1156#0: *14523 FastCGI sent in stderr: "PHP message: PHP Warning:  Unknown: failed to open stream: Permission denied in Unknown on line 0
Unable to open primary script: /var/www/test.php (Permission denied)" while reading response header from upstream, client: 192.168.56.1, server: localhost, request: "GET /test.php HTTP/1.0", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "pc140014361"


acces.log
code:
1
192.168.56.1 - - [12/May/2015:07:42:28 +0200] "GET /test.php HTTP/1.0" 403 15 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0" "172.22.237.110"


En mijn browser geeft dan Access Denied weer ipv een leeg scherm (tenzij het om includes gaat geloof ik)

[Voor 9% gewijzigd door Blokker_1999 op 12-05-2015 07:42]

No keyboard detected. Press F1 to continue.


Acties:
  • 0Henk 'm!

  • moijamie
  • Registratie: augustus 2013
  • Laatst online: 16:24
init6 schreef op maandag 11 mei 2015 @ 18:16:
Je webserver wil je ook niet als root draaien. :)
Mee eens als je dan command line injection hebt oid heeft de aanvaller direct root toegang :+

females = System.getProperty("money") > 1000000


Acties:
  • 0Henk 'm!

  • Hakker
  • Registratie: augustus 2002
  • Laatst online: 12:26

Hakker

a.k.a The Dude

Topicstarter
Ok wat meer uitleg. Schijnbaar heeft de compiler besloten in root te draaien als ik nginx start. Niet top maar ach met user www-data erin en het is opgelost.

Ik kwam erachter nadat ik dieper in php5-fpm ben gaan duiken. aangezien als ik /var/www/script.php als SCRIPT_FILENAME niet eens aan kon roepen moest er ergens geen communicatie zijn.

Nadat ik root /var/www ook had uncomment in de location \ ~php kreeg ik eindelijk een echte error wat dus een permission denied opleverde. Daarna eens user www-data geprobeert in de nginx.conf en voila ik had ineens werkend php.

De hele reden dat ik niet verder kwam was dat ik geen nette error kreeg behalve een 404 in access.log

En nee hij draaide in productie zal ie ook nooit doen tenzij je een thuis servertje productie wilt gaan noemen. Het is alleen zo jammer dat nginx zo raar deed met loggen, want als je schijnbaar geen root opgeeft als een functie is afgesloten gaat ie niet standard naar de standard lokatie kijken.

Is het perfect... waarschijnlijk niet ben tenslotte niet een linux guru maar heb het volgens mij redelijk afgedekt zo en het voornamste is dat het werkt op dit moment.

[Voor 8% gewijzigd door Hakker op 12-05-2015 17:47]

Artificial Intelligence is no match for natural stupidity | Mijn DVD's | Mijn Games | D2X account: Hakker9


Acties:
  • 0Henk 'm!

  • Blokker_1999
  • Registratie: februari 2003
  • Laatst online: 06:40
je workers zullen echt niet als root gedraaid hebben, vermoedelijk netjes als nobody zoals beschreven in de documentatie. Als ze echt als root zouden draaien dan had je namelijk nooit permissie problemen mogen hebben daar root net toegang heeft tot alles.

en ja, in de php location wil je meestal wil je script_filename parameter fixed zitten, om een voor mij onbekende reden werkt het anders vaak niet, hoewel deze met de standaard setting gewoon de document root zou moeten nemen.

No keyboard detected. Press F1 to continue.

Pagina: 1


Apple iPhone SE (2020) Microsoft Xbox Series X LG CX Google Pixel 4a CES 2020 Samsung Galaxy S20 4G Sony PlayStation 5 Nintendo Switch Lite

'14 '15 '16 '17 2018

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2020 Hosting door True