私が1つのWebサイトに対して行ったことは次のとおりです。
- Apache の前にリバース プロキシとして nginx をセットアップする
- そのように構成します:
- PHP ページ(動的コンテンツ)へのリクエストは Apache に送信されます。
- 静的ファイル(CSS、JS など)へのリクエストは、nginx によって直接処理されます。
これにより、2 つのドメインを設定する必要がなくなります。すべてが同じドメイン上にあります。
基本的に、私がやったことは次のとおりです。
- gzip圧縮なし、キャッシングあり、nginxから画像を提供
- nginx から js/css (つまり、テキスト ファイル) を gzip 圧縮とキャッシングで提供する
- 他の拡張機能 (pdf、実行可能ファイルなど) を nginx 形式で、圧縮せず、キャッシュせずに提供する
- 他のリクエストを Apache に渡す
私のnginxの設定ファイルは次のようになります:
server {
listen 80;
server_name MY_DOMAIN_NAME;
access_log /var/log/nginx/MY_DOMAIN_NAME.access.log;
gzip on;
gzip_comp_level 2;
gzip_proxied any;
gzip_types text/plain text/html text/css text/xml application/xml application/xml+rss application/xml+atom text/javascript application/x-javascript application/javascript;
location ~* ^.+\.(jpg|jpeg|gif|png|ico)$ {
root /home/www/MY_DOMAIN_NAME;
#access_log off;
gzip off;
expires 1d;
}
location ~* ^.+\.(css|js)$ {
root /home/www/MY_DOMAIN_NAME;
#access_log off;
expires 1d;
}
location ~* ^.+\.(pdf|gz|bz2|exe|rar|zip|7z)$ {
root /home/www/MY_DOMAIN_NAME;
gzip off;
}
location / {
proxy_pass http://MY_DOMAIN_NAME:8080;
proxy_redirect off;
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_max_temp_file_size 0;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
では、なぜそのようなことをするのでしょうか。
さて、nginxは次のことになっています:
- 必要なメモリが少ない
- より速く
- より多くの接続を処理できる
したがって、トラフィックの少ない Web サイトで、Apache にかかる負荷を軽減するのに役立つと思います。