Ha Tweakers!
Zoals de topic titel aangeeft het ik een probleem met Nginx en PHP-FPM, deze serveert alleen 57b bin files in plaats van de php files te executen (see wilmardenouden.nl)
Ik zal even kort beschrijven wat de achtergrond van dit verhaal is. Ik had altijd een VM die alles deed, mail, database, webserver enzovoorts. Nu sinds kort naar een LXC container setup gegaan die ik provision met Ansible. Ook ben ik aan de gang gegaan met het beter scheiden d.m.v users en permissies en met het gebruik van een OTAP (OTP but you het the idea)
Het idee is dat de loadbalancer alle HTTPS regelt en het verkeer achter de loadbalancer over HTTP gaat (mocht dit geen handige aanpak zijn, hoor ik het graag!). Achter de loadbalancer bevinden zich losse containers met alle services zoals webserver, mailserver enzovoort.
Dus begonnen met een Nginx loadbalancer met de volgende config:
De problematische webserver heeft de volgende Nginx config
En dit is de PHP-FPM pool horende bij de production
Wie ziet hier rare dingen? Ik ben al twee dagen aan het zoeken en weet het nu echt niet meer
De loadbalancer logt het volgende, wat mijn vermoeden bevestigd dat het probleem op de webserver ligt.
Maar de webserver logt niks, geen errors in /var/log/nginx/error.log. Maar ook geen entries in /home/production/logs, nginx maakt wel de error.log en access.log aan maar deze blijven leeg. PHP maakt ook geen logfile aan in de php-fpm folder.
Ik heb intussen zelf al zoveel geprobeerd dat ik het niet allemaal neer kan zetten, ook lijkt het me handig dat jullie er gewoon vanuit gaan dat ik nog helemaal niks heb getest. Wie weet heb ik ergens wat gemist of zie ik iets heel duidelijks over het hoofd.
Alvast bedankt voor het lezen van mijn verhaal!
Ik heb mijn best gedaan alles zo duidelijk mogelijk te omschrijven, mocht er iets niet duidelijk zijn vraag maar raak!
Zoals de topic titel aangeeft het ik een probleem met Nginx en PHP-FPM, deze serveert alleen 57b bin files in plaats van de php files te executen (see wilmardenouden.nl)
Ik zal even kort beschrijven wat de achtergrond van dit verhaal is. Ik had altijd een VM die alles deed, mail, database, webserver enzovoorts. Nu sinds kort naar een LXC container setup gegaan die ik provision met Ansible. Ook ben ik aan de gang gegaan met het beter scheiden d.m.v users en permissies en met het gebruik van een OTAP (OTP but you het the idea)
Het idee is dat de loadbalancer alle HTTPS regelt en het verkeer achter de loadbalancer over HTTP gaat (mocht dit geen handige aanpak zijn, hoor ik het graag!). Achter de loadbalancer bevinden zich losse containers met alle services zoals webserver, mailserver enzovoort.
Dus begonnen met een Nginx loadbalancer met de volgende config:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name wilmardenouden.nl;
ssl on;
ssl_certificate /etc/letsencrypt/live/wilmardenouden.nl/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/wilmardenouden.nl/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/wilmardenouden.nl/chain.pem;
ssl_stapling on;
ssl_stapling_verify on;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
add_header Strict-Transport-Security "max-age=31536000; preload";
add_header X-Frame-Options SAMEORIGIN;
location / {
proxy_pass http://192.168.1.106:80;
}
} |
De problematische webserver heeft de volgende Nginx config
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
| server {
listen 80 http2;
server_name wilmardenouden.nl;
root /home/production/www/;
access_log /home/production/log/nginx/access.log main buffer=16k;
error_log /home/production/log/nginx/error.log warn;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_pass unix:/run/php-fpm-production.sock;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
} |
En dit is de PHP-FPM pool horende bij de production
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| [production]
user = production
group = production
listen = /run/php-fpm-production.sock
listen.owner = nginx
listen.group = nginx
listen.mode=0660
pm = dynamic
pm.max_children = 18
pm.start_servers = 8
pm.min_spare_servers = 4
pm.max_spare_servers = 8
pm.max_requests = 512
php_admin_value[memory_limit] = {{ webserver_php_memory_limit }}
php_admin_value[post_max_size] = {{ webserver_php_post_max_size }}
php_admin_value[upload_max_filesize] = {{ webserver_php_max_file_size }}
php_admin_value[error_log] = /home/production/log/php-fpm/error.log
rlimit_files = 131072
security.limit_extensions = .php |
Wie ziet hier rare dingen? Ik ben al twee dagen aan het zoeken en weet het nu echt niet meer
De loadbalancer logt het volgende, wat mijn vermoeden bevestigd dat het probleem op de webserver ligt.
code:
1
| [error] 10300#10300: *44 upstream sent no valid HTTP/1.0 header while reading response header from upstream, client: 182.186.165.175, server: wilmardenouden.nl, request: "GET /wp-login.php HTTP/1.1", upstream: "http://192.168.1.106:80/wp-login.php", host: "wilmardenouden.nl" |
Maar de webserver logt niks, geen errors in /var/log/nginx/error.log. Maar ook geen entries in /home/production/logs, nginx maakt wel de error.log en access.log aan maar deze blijven leeg. PHP maakt ook geen logfile aan in de php-fpm folder.
Ik heb intussen zelf al zoveel geprobeerd dat ik het niet allemaal neer kan zetten, ook lijkt het me handig dat jullie er gewoon vanuit gaan dat ik nog helemaal niks heb getest. Wie weet heb ik ergens wat gemist of zie ik iets heel duidelijks over het hoofd.
Alvast bedankt voor het lezen van mijn verhaal!
Ik heb mijn best gedaan alles zo duidelijk mogelijk te omschrijven, mocht er iets niet duidelijk zijn vraag maar raak!