3

次の環境を構成しようとしています: apache と mod_proxy を実行している VPS は、自宅 (バックエンド) で実行されている別のサーバーをプロキシします。ファイルをダウンロードすることはできますが、ファイルをアップロードしようとすると、POST リクエストが次のエラーで失敗します。

Proxy Error

The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request POST /upload/upload.php.

Reason: Error reading from remote server

私が理解していないのは、なぜ 500 バイトのファイルでも機能するのかということです。そして、それは迅速に行います!ただし、4kb の小さなファイルをアップロードしようとすると、エラーが発生するまで時間がかかります。予想どおり、VPS なしでバックエンドに直接アクセスすると、アップロードは問題なく動作します。両側で多くの構成を試し、タイムアウトを増やしてみましたが、これが正しい方法だとは思いません。バックエンドには mod_access がインストールされており、ファイルのアップロードが失敗しても何もログに記録されません。

Apache は次のログを記録します。

[Thu Nov 07 22:26:03.044309 2013] [proxy_http:error] [pid 9173] (70007)The timeout specified has expired: [client 177.148.252.99:54097] AH01102: error reading status line from remote server myhome.com, referer: http://frontend.com/upload/
[Thu Nov 07 22:26:03.044423 2013] [proxy:error] [pid 9173] [client 177.148.252.99:54097] AH00898: Error reading from remote server returned by /upload/upload.php, referer: http://frontend.com/upload/

VPS は Apache 2.4.6 を実行しており、自宅で実行されているサーバーは SSL を使用した Lighttpd 1.4.32 です。

バックエンドにリダイレクトする仮想ホストは次のように構成されます。

<VirtualHost *:80>
        ServerAdmin webmaster@frontend.com
        ServerName frontend.com
        ProxyPass        / http://backend.com/
        ProxyPassReverse / http://backend.com/
</VirtualHost>

フロントエンド: http://frontend.com/upload/

バックエンド: http://backend.com/upload/

あなたはなにか考えはありますか?

4

2 に答える 2

3

表示されているエラーは、バックエンド システムへのプロキシ接続のタイムアウトが原因です。ProxyTimeout 値をデフォルトより大きい値に設定する必要があります。60 秒の値から始めて、それがどのように機能するかを確認することをお勧めします。

ProxyTimeout 60

さらに、データをチャンクで送信するように接続を構成するために、環境変数を設定したいという Varghese に同意します。残念ながら、正しい設定が必要かどうかについては混乱があるため、次のいずれかを試すことができます。

SetEnv proxy-sendchunked  1

また

SetEnv proxy-sendchunks  1

幸運を。イライラする問題です。


で使用可能な環境変数mod_proxy:

https://httpd.apache.org/docs/2.4/mod/mod_proxy_http.html

于 2014-08-05T18:35:21.073 に答える
2

私は同様の問題に直面し、声明で解決しましたProxyPassReverse。声明の後に置きました。

使用する必要があるコマンドは次のとおりです。SetEnv proxy-sendchunks 1

于 2013-11-21T08:18:29.993 に答える