У меня проблемы с настройкой моего веб-сервера (nginx) на работу с php-fpm. Страница продолжает загружаться, а затем время загрузки истекает.
Надеюсь, один из вас поможет мне решить эту проблему. Я сделал экспорт своих активных правил iptables в надежде понять, что не так.
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
Спасибо за ответ. Похоже, в моих 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;
}
}
Я должен отметить, что у меня нет опыта работы с iptables и я просто новичок в использовании Linux.
Не проверяя это самостоятельно, я не могу быть уверен, но кажется, что это всего лишь случай строки плохого регекса для перенаправления запросов к вашему php-fpm движку.
location ~ [^/]\.php(/|$) {
Будут сопоставляться только запросы на местоположение, которые заканчиваются на ".php/" (что редко встречается), или явно заканчиваются на ".php". Я предполагаю, что вы использовали руководство здесь, что нормально (хотя я никогда не видел, чтобы кто-то делал это таким образом раньше), но если вы не включите утверждение if
, как показано там, это может привести к нарушению запросов. Есть также проблема, которая может вас укусить, что если вы не установите что-то наподобие
fastcgi_param SCRIPT_FILENAME /your/php/path/$fastcgi_script_name;
явно (например, неявно с помощью $document_root в fastcgi.conf
), вы можете указать неверный путь.
Две другие вещи, которые следует помнить, это то, что у вас нет блока location /
для обработки всех других запросов, которые не найдены явно в вашем корневом каталоге, и, наконец, вы перечислили ваш php блок вверху, что неправильно - он будет пытаться сначала совпасть с URI, заканчивающимся на php, вместо того, чтобы сначала сопоставлять и обслуживать статические файлы (jpg, ico и т.д.), что обычно является тем, что вы хотите.