症状は下記のとおりです。
ローカルIPからアクセスすると高負荷に耐えられるPHPが、グローバルIPからのアクセスに対しては(104: Connection reset by peer) または(110: Connection timed out)になってしまいます。
環境は下記のとおりです。
サーバー CenOS7.5
WEBサーバー nginx 1.14
https認証 Lets Encrypt
【1 サーバーの構築環境】
【1】
正規のドキュメント
192.168.1.100
ドキュメント設置先 /home/example/index.php
サーバーアクセス
https://example.com/index.php
【2】
テストドキュメント(正規ドキュメントの場所を見に行くローカルIP)
192.168.1.150
ドキュメント設置先 /home/example/index.php
サーバーアクセス
https://192.168.1.150/index.php
【2 テストしたこと】
1 上記を設定し、まずはテスト環境でApache Jmeter を使いテストしました。
https://192.168.1.150/index.php に高負荷(30秒間に960アクセス)をかけたところ、問題なく表示されました。 エラーも出ていません。
PHPおよび PHP-fpm、nginxの設定は問題ないと解釈しました。
【3 実戦設置】
2のテストで問題なかったため、正規のドキュメントルートで公開しました。
結果
recv() failed (104: Connection reset by peer) while reading response header from upstream
または
upstream timed out (110: Connection timed out) while connecting to upstream
のエラーが連発し、
https://example.com/index.php
はおろか
テスト環境では、高負荷でも見れたはずの
https://192.168.1.150/index.php
すら見れなくなりました。
エラーが出るのは
nginx_log/error.log
のみであり
php-fpm/error.log
php-fpm/www-error.log
にはエラーは出ません。
一方、同時に設置しているhtmlは問題なく見れます。
https://example.com/test.html
https://192.168.1.150/test.html
グローバルIPからのアクセスはせいぜい秒間数アクセスであり、テスト環境よりはるかに低負荷のものです。
また、PHPがエラーを吐くこと、htmlは見れることから、すくなくともサーバーまでのアクセスは到達しているようです。
ローカルIPからだと高負荷に耐えられるPHPが、グローバルIPからの接続ではエラーを吐くということです。
https認証のLets Encryptは何度も設置しており、どんな高負荷でも今までこのようなことはありませんでした。
何が問題かわかりますでしょうか?
よろしくお願いいたします。
追記します。
このトラブルになって2週間経過しており、
110エラー 104エラーでググって出てくることは全て試し、その結果はnginx やPHPの設定に反映させています。
phpそのものも、ローカルで接続したリバースプロキシサーバー(192.168.1.160)の内容を表示するというもので、ありきたりのソースです。下記のようなものでリバースプロキシサーバーの内容を表示しています。リバースプロキシサーバーは同一サーバー内に設定してており、この接続に問題はありません。
タイトルGET部分
<?php $titlename = $doc["#under_title"]->text(); $titlename_trim= trim($titlename); echo $titlename_trim; ?>以下、コンテンツ内容のGETも同様
よろしくお願いいたします。
追伸です。
(上記ソースがローカルIPを拾ってくることに対して追伸)
File get contentsだけだとローカルサーバーの内容は表示されませんが、今回はphpQuery-onefile.phpを使い、
ローカル内でスクレイピンクし、その結果を表示するものです。
PHPソースそのものは1年運用済みのもので、いまこの瞬間も問題なくグローバルに対して表示しています。
今回、アクセス過多のためCPU、メモリ、SSDを強化したサーバーを投入したいと考えています。
CentOS6から7に変えた以外は全て設定は従来問題なく使用できていたものに準じています。
リバースプロキシにローカルIPでアクセスすることそのものが原因ではないと思っています。
回答2件
あなたの回答
tips
プレビュー