Apacheと一緒にリクエストを処理するためにnginxをインストールしました。以前は、Apacheはポート80でリッスンしていましたが、nginxに切り替えてポート80でリッスンし、Apacheをいくつかのあいまいなポートでリッスンし、非静的コンテンツに対するリクエストの場合はnginxproxy_passをApacheに割り当てました。
私のnginx設定には次のものが含まれています:
server {
listen 80;
server_name static.test.domain.com;
location / {
root /home/test/www/static;
index index.html index.htm;
}
}
server {
listen 80;
server_name domain.com *.domain.com;
location /
{
proxy_set_header Server "testserver";
proxy_set_header Host $Host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8800;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
Apachevhost構成には次のものがあります。
NameVirtualHost *:8800
<VirtualHost *:8800>
DocumentRoot /var/www/html
ServerName domain.com
ServerAlias www.domain.com
</VirtualHost>
<VirtualHost *:8800>
DocumentRoot /home/test/www
ServerName test.domain.com
</VirtualHost>
...
リクエストが高速になったことに気づきましたが、リクエストが非静的ページに対するものであっても、nginxが[サーバー]フィールドのすべてのリクエストヘッダーに表示されていることにも気づきました。これは潜在的な問題ですか?セットアップと同じIPでnginxを使用するサーバーをいくつか見ましたが、サーバーフィールドが異なります(静的でないコンテンツリクエストの場合はApacheが表示され、静的な場合はnginxが表示されます)。
さらに、オペコードのキャッシュにAPCを使用しており、サイトディレクトリ内のいくつかのリダイレクトルールで.htaccessを使用しています(いくつかのApacheルールをnginxに移植する必要があると思いますか?それは必要ですか?)。また、いくつかのJava cronスクリプトを実行します(これはnginxプロセスを妨げますか?)この新しいセットアップは潜在的な問題につながる可能性がありますか?
たくさんの質問があります、私は知っています。しかし、事前に感謝します!
詳細: Centos 532ビットで実行されているApache2.2でnginx1.0.6を使用します。
私の.htaccessファイル(この一部をapacheに移植する必要がありますか?):
# BEGIN Compress text files
<ifModule mod_deflate.c>
<filesMatch "\.(css|js|x?html?|php)$">
SetOutputFilter DEFLATE
</filesMatch>
</ifModule>
# END Compress text files
# BEGIN Expire headers
<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType image/x-icon "access plus 2592000 seconds"
ExpiresByType image/jpeg "access plus 2592000 seconds"
ExpiresByType image/png "access plus 2592000 seconds"
ExpiresByType image/gif "access plus 2592000 seconds"
ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 604800 seconds"
ExpiresByType application/javascript "access plus 604800 seconds"
ExpiresByType application/x-javascript "access plus 604800 seconds"
ExpiresByType application/xhtml+xml "access plus 600 seconds"
</ifModule>
# END Expire headers
# BEGIN Cache-Control Headers
<ifModule mod_headers.c>
<filesMatch "\.(ico|jpe?g|png|gif|swf)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
<filesMatch "\.(css)$">
Header set Cache-Control "max-age=604800, public"
</filesMatch>
<filesMatch "\.(js)$">
Header set Cache-Control "max-age=604800, private"
</filesMatch>
</ifModule>
# END Cache-Control Headers
# BEGIN Turn ETags Off
<ifModule mod_headers.c>
Header unset ETag
</ifModule>
FileETag None
# END Turn ETags Off
Apacheにmod_rpaf
をインストールすることを検討してください。これにより、サーバーのIPアドレスではなく、ApacheアクセスログでクライアントのIPアドレスを取得できます(技術的には、nginxはApacheからWebページを要求するため、ApacheはそのIPをクライアントIPとして認識します。 mod_rpaf
)。これは私が考えることができるあなたのセットアップで起こりうる唯一の問題です、他のすべては正しいように見えます。 nginxは静的および動的の両方のすべてのWebページのフロントエンドとして機能するため、すべてのヘッダーにnginxを含めるのは正しいことです。