よくある間違い502
1.設定エラー
nginxのPHP-FPMが見つからないため、エラーが一般的fastcgi_pass間違ったパスの後ろに配置されているので、それはソケットまたはIPを続けることができます:ポート。
2.資源の枯渇
nginxの高い量を要求した場合、バックエンドのphp-FPMサービスのnginxの直接検索、PHPを扱うLNMPアーキテクチャ、我々は子供のPHP-FPM構成に十分な、そしてPHP-FPMリソースが一度枯渇されていません資源の枯渇nginxのは、PHP-FPMは、502エラーを見つけることができません。
ソリューション:
で値pm.max_childrenのphp-fpm.confを調整するために、それは増加するが、無限に増やすことはできません、すべての後に、限られた資源、一般4Gメモリ・マシンのphp-FPMとnginxのを実行している場合、MySQLは150に設定することができます実行されません。 、8G 300にので、
3.その他の理由
また、めったにありません、我々はnginxのエラーログのトラブルシューティングに役立つ2つのエラー上記のための他の理由があります。
cat /usr/local/nginx/logs/nginx_error.log
また、ログにレベルを定義することができます:vimのは/ usr / local / nginxの/ confに/ nginx.confのerror_logを見つけ、デフォルトはライン上で最も厳しいクリティカルである、あなたはまた、最も包括的なデバッグ情報の表示を変更することができますが、私たちを爆発するのは簡単ですディスク。
3.1修正nginxの設定ファイル
まず、我々は、ブラウザのアクセスを許可する必要があります
vim/usr/local/nginx/conf/vhosts/111.conf
server
{
listen 80;
server_name www.111.com; // 域名地址
index index.html index.htm index.php;
root /data/www/;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/tmp/www.sock; // 修改sock
#fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;
}
}
3.2チェック文法は正常です
/usr/local/nginx/sbin/nginx -t
3.3コンフィギュレーションファイルをリロード
/usr/local/nginx/sbin/nginx-s reload
/etc/init.d/nginx reload
ユーザーはnginxのを実行している3.4チェック
ps aux |grep nginx
3.5編集のphp-FPMファイル
私たちはグループで502を表示しないようにされ、この文書でユーザーのホームnginxのは、PHP-FPMを設定したいです
vim/usr/local/php/etc/php-fpm.conf
[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log =/usr/local/php/var/log/php-fpm.log
[www]
listen = /tmp/www.sock
user = php-fpm
group = php-fpm
listen.owner = nobody //定义属主
listen.group = nobody //定义属组
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
3.6再起動のphp-FPM
/etc/init.d/php-fpm restart
追加:最近、多くの学生が直面する問題
(5.4を含む)この場合には、ソケットを使用して、バージョン5.4よりも高いソケットを聞いて、デフォルトのファイルのアクセス権は所有者は読み取り専用であり、他方は任意の許可なしにユーザーのグループです。だから、502で、その結果、ソケットファイルを読み込む方法はありません(私たちの設定は誰もありません)ローンチ顧客nginxの、この問題は、nginxのエラーログで見つけることができます。解決策は、上記の構成のプロファイルがこの問題を回避する必要があります与えられた、シンプルです。
listen.owner = nobody //定义属主
listen.group = nobody //定义属组
これらの2つの構成は、はい、所有者とグループのソケット誰定義されます。これに加えて、方法があります
listen.mode = 666
だから、誰もが読み取り権限を持つことはできません。