1

Web ルート ( ) で WordPress を実行している Apache サーバーがあります/var/www/html。私の access_log には、次の形式のエントリがたくさんあります。

98.209.16.114 - - [15/Feb/2013:21:19:51 -0500] "GET http://www.twitter.com HTTP/1.1" 301 - "-" "curl/7.28.1"
98.209.16.114 - - [15/Feb/2013:21:19:51 -0500] "GET http://www.twitter.comhttp/www.twitter.com HTTP/1.1" 301 - "-" "curl/7.28.1"
98.209.16.114 - - [15/Feb/2013:21:19:51 -0500] "GET http://www.twitter.comhttphttp/www.twitter.comhttp/www.twitter.com HTTP/1.1" 301 - "-" "curl/7.28.1"
98.209.16.114 - - [15/Feb/2013:21:19:52 -0500] "GET http://www.twitter.comhttphttphttp/www.twitter.comhttphttp/www.twitter.comhttp/www.twitter.com HTTP/1.1" 301 - "-" "curl/7.28.1"

wherewww.twitter.comは、自分以外の任意の数の奇数ドメインに置き換えることができます。

EDIT:自分のコマンドラインからこの現象をテストしていたため、コピーされた行にはcurlが含まれています。

私のファイルの関連行は次のhttpd.confとおりです。

NameVirtualHost *:80

<VirtualHost *:80>
  DocumentRoot /var/www/html
  ServerName www.mydomain.com
  <Directory /var/www/html>
    AllowOverride All
  </Directory>
</VirtualHost>

<VirtualHost *:80>
  ServerName mydomain.com
  RewriteEngine On
  RewriteRule ^/(.*) http://www.mydomain.com/$1 [L,R=301]
</VirtualHost>

.htaccessWordPressディレクトリのファイルは次のようになります。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

これは、1日に数十回発生します。私が持っているいくつかの質問は次のとおりです。

  • 非常に多くのプロキシ試行について心配する必要がありますか? mod_proxy をオフにしましたが、http リクエストがループしている間、https リクエストは次のいずれ301かを返すようです400
  • 心配すべきパフォーマンスの低下はありますか?
  • くそったれを修正するにはどうすればよいですか?

他に必要な情報を教えてください。

4

1 に答える 1

2

wordpress 用の apache でロードする必要があるモジュールは次のとおりです。これにより、php モジュールが除外されます。これについては、後で詳しく説明します。

LoadModule authz_host_module modules/mod_authz_host.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule env_module modules/mod_env.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule dir_module modules/mod_dir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule headers_module modules/mod_headers.so

php fcgi または php mod_php (prefork) を実行しているかどうかに応じて、次のいずれかを含めます。

#---- For FPM of PHP Enable both below and disable php5_module
LoadModule fastcgi_module modules/mod_fastcgi.so
LoadModule actions_module modules/mod_actions.so
#---- For standard php5 module enable below and disable 2 above
#LoadModule php5_module  modules/libphp5.so

ログ出力に基づいて表示されているリダイレクトは、不適切に構成された mod_rewrite ルール、または apache のルールと競合している wordpress の 301 リダイレクト プラグインのように見えます。

一般的な経験則として、namevirtualhost ベースの vhost をホストする場合、デフォルトの vhost を Servername default で作成します

そして、そのドキュメント ルートを、1 つの html ファイルを含むディレクトリに設定し、すべてのトラフィックを index.html に転送するように書き換えルールを設定します (html ファイルは、ホストされているものだけを出力します)。ドメイン自体であり、html のみを実行しているため、静的 html のみであるため、php に基づく iops は必要ありません。

そうすれば、仮想ホストはそれがホストするドメインへのリクエストのみを処理します。現在、発生している 301 の問題は解決されません。mod_rewrite 設定を共有できる場合は、おそらく私たちが支援できる何かがあるでしょう。

SSL ベースのトラフィックに関するコミュニティで見た最大の問題は、Apache ではなくロード バランサーで SSL 証明書が切り捨てられるロード バランサーと統合する必要がある場合です。そうは言っても、https != on かどうかを確認する書き換え条件/ルールを実行することはできなくなりました。ロード バランサーが証明書を終了し、http (ポート 80) トラフィックを Web ホストに送信するため、301 を新しい場所にリダイレクトするため、Apache は常に考えます。保護された仮想ホストにヒットしても暗号化されていません

仮想ホストに関する追加の注意事項。絶対に必要でない限り、.htaccess ファイルは使用しない方がよいでしょう。ワードプレスの場合、最適なパフォーマンスを得るには、vhost ディレクトリ要素は次のようになります。

<VirtualHost *:80>
        ServerName www.example.com
        DocumentRoot /path/to/doc_root
        <Directory /path/to/doc_root/>
                AllowOverride None
                Options SymLinksIfOwnerMatch MultiViews -Indexes
                Order allow,deny
                Allow from all
                RewriteEngine On
                RewriteRule ^index\.php$ - [L]
                RewriteCond %{REQUEST_FILENAME} !-f
                RewriteCond %{REQUEST_FILENAME} !-d
                RewriteRule ^.*$ index.php [L]
        </Directory>
</VirtualHost>

私が最適なパフォーマンスと言う理由は、.htaccess ファイルに来るすべてのリクエストで .htaccess ファイルが apache によって読み取られるわけではないからです。代わりに、仮想ホスト構成の一部として読み取り、構成をメモリに保存するため、基本的に、.htaccess ファイルとオーバーライドに依存する必要がないという追加のセキュリティに加えて、.htaccess を使用しないことで iops を大幅に節約できます。

最後に、RewriteBase の使用は無関係であり、/blog/ のような特定のエイリアスでワードプレスをホストしない限り、問題が発生することがあります。.htaccess ファイルに基づく場合、ベース ドメインにあるように見えるため、そのディレクティブをそこの。参考までに、上記の仮想ホスト構成にある書き換えルールを参照してください。

于 2013-02-26T20:14:57.600 に答える