Problemas com nginx e PHP-FPM

2

Estou tendo problemas para fazer com que meu servidor da web (nginx) funcione com o php-fpm. A página continua carregando e, em seguida, o tempo de carregamento expira.

Espero que um de vocês possa me ajudar a resolver esse problema. Eu fiz uma exportação das minhas regras ativas do iptables na esperança de obter uma pista sobre o que está errado.

Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 9962 1071K fail2ban-ssh  tcp  --  any    any     anywhere             anywhere             multiport dports ssh
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere            
 9982 1106K ACCEPT     all  --  any    any     anywhere             anywhere             state RELATED,ESTABLISHED
  439 25076 ACCEPT     tcp  --  any    any     anywhere             anywhere             state NEW tcp dpt:ssh
  117  5964 ACCEPT     tcp  --  any    any     anywhere             anywhere             state NEW tcp dpt:http
   24  1372 ACCEPT     tcp  --  any    any     anywhere             anywhere             state NEW tcp dpt:ftp
   15   620 ACCEPT     tcp  --  any    any     anywhere             anywhere             state NEW tcp dpts:20000:30000
   88  4280 ACCEPT     tcp  --  any    any     anywhere             anywhere             state NEW tcp dpt:https
   54  2438 ACCEPT     icmp --  any    any     anywhere             anywhere             limit: avg 100/sec burst 100
    0     0 ACCEPT     icmp --  any    any     anywhere             anywhere             limit: avg 1/sec burst 10
 2110  110K syn-flood  tcp  --  any    any     anywhere             anywhere             tcp flags:FIN,SYN,RST,ACK/SYN
 2687  163K REJECT     all  --  any    any     anywhere             anywhere             reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 85 packets, 14451 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain fail2ban-ssh (1 references)
 pkts bytes target     prot opt in     out     source               destination         
 7951  908K RETURN     all  --  any    any     anywhere             anywhere            

Chain syn-flood (1 references)
 pkts bytes target     prot opt in     out     source               destination         
 2110  110K RETURN     tcp  --  any    any     anywhere             anywhere             limit: avg 3/sec burst 6
    0     0 REJECT     all  --  any    any     anywhere             anywhere             reject-with icmp-port-unreachable

Atualizar

Obrigado pela resposta. Não parece estar no meu iptables.

server {
    listen 80;
    server_name <my domain>.<my tld>;
    access_log /data/wwwlogs/<mydomain>.<mytld>_nginx.log combined;
    index index.html index.htm index.php;
    include /etc/nginx/conf/rewrite/none.conf;
    root /data/wwwroot/<mydomain>.<mytld>;


    location ~ [^/]\.php(/|$) {
        #fastcgi_pass remote_php_ip:9000;
        fastcgi_pass unix:/dev/shm/php-cgi.sock;
        fastcgi_index index.php;
        include fastcgi.conf;
    }
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
        expires 30d;
        access_log off;
        }
    location ~ .*\.(js|css)?$ {
        expires 7d;
        access_log off;
    }
}

Eu preciso notar que eu sou absolutamente inexperiente com o iptables e um mero iniciante no uso do linux.

    
por Peter 11.07.2016 / 15:36

1 resposta

2

Sem testar isso eu mesmo, não posso ter certeza, mas parece que isso é apenas um caso de uma linha de regex ruim para direcionar solicitações para seu mecanismo php-fpm.

location ~ [^/]\.php(/|$) {

Corresponde apenas às solicitações de localização que terminam com ".php /" (que é incomum) ou terminam explicitamente com ".php". Eu estou supondo que você usou o guia aqui , o que é bom (embora eu ' Nunca vi alguém fazer isso dessa maneira antes), mas se você não incluir a instrução if como mostrada lá, isso pode levar a solicitações interrompidas. Há também o problema que pode te morder, se você não definir algo como

fastcgi_param SCRIPT_FILENAME /your/php/path/$fastcgi_script_name;

explicitamente (por exemplo, implicitamente com $ document_root em fastcgi.conf ), você pode estar apontando para o caminho errado.

As outras duas coisas que você deve ter em mente é que você não tem location / de bloco para lidar com todas as outras solicitações que não são explicitamente encontradas como estão no diretório raiz e, finalmente, você listou seu bloco php em o topo, que é incorreto - ele tentará corresponder para o final do URI em php primeiro, em vez de corresponder e servir os arquivos estáticos primeiro (jpg, ico, etc.) que normalmente é o que você deseja.

    
por 15.07.2016 / 09:03