Skip to main content.
nginxってだいたい最初からSNIが有効かと思ってたけどそうでもないのね・・・。

なーんかSSLを設定したのに、先に置いておいた証明書(別ドメイン)が表示されるなーと思っていたら。

最近の環境ではあんまり意識する必要は無いんやろうけど、けっこう数年前から動かしてたnginxだとSNIがenabledではなくdisabledって出とりましたわ。
ずっと証明書の何かを間違えたんかと思って色々調べてたのが無駄骨だったわけで。

まぁnginxをアップデートすればすぐ解決したけど、こういうこともあるんやなぁという備忘録。

SNIとは
https://jp.globalsign.com/blog/2015/server_name_indication.html

管理しているWordpressサイトで年明けからやたらと502エラーを吐くようになって、どしたんかなぁと思ってました。

元々アクセスがかなり多いサイトなので単純に負荷に耐えきれてないのかと思いきや、見てみるとHDD容量がいっぱいすぎて、fastcgiのキャッシュファイルが作れません的なエラーログが見つかりました。

容量の空きを100Gbyteほど確保してみたらとりあえず落ち着いたんで様子見。
これが直接的な原因かどうかは分かりませんがまぁHDD100%で放置するよりは良いでしょー。

専用サーバをひさしぶりにいじるとクラウドサーバみたいに随時足してけばええかーみたいなノリが通用しないからマイッチング。
仕事上で扱ってるサイトにSSLを導入するという運びになったわけですが、これまでApacheでは入れたことあったんですが、nginxでは入れたことが無かったのでいろいろググってみた。

んで、設定をわっちゃわっちゃいじってGlobalSingのSSLチェックで確認。

SSL Server Test (Powered by Qualys SSL Labs)
https://globalsign.ssllabs.com/

ssl_ciphers メモ


最初B判定だったのをいじった結果、A判定を取ったので、その時の設定をメモメモ。

server {
listen 443;
server_name hogehoge.com;
〜〜〜
〜〜〜

ssl on;
ssl_certificate /home/hogehoge/ssl/cert.pem;
ssl_certificate_key /home/hogehoge/ssl/cert.key;

ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_prefer_server_ciphers on;
ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:!DHE-RSA-AES128-SHA:!DHE-RSA-AES128-SHA256:!DHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-GCM-SHA384:!DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:!DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:!DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK";
〜〜〜
〜〜〜
〜〜〜
}


BEAST対応はできてないんですが、「RC4が防げていればまぁとりあえずOK」みたいな記事をチラホラ見かけたのでとりあえずはこのままで行こうかなと思う次第。
nginx で

proxy_buffering を on にしていたのに、
proxy_buffer_size と proxy_buffers の設定をし忘れてたというミス。

中途半端(´Д`;)
あんまり使うことは無いけど、
「とりあえずまずはindex.phpを通せ。話はそれからだ。」的な処理を作らないといけない場合もたまーにあるのでメモメモ。

location / {
  root /home/hogehoge/public_html;
  index index.html index.htm index.php;
  try_files $uri $uri/ /index.php?path=$uri&$args;
}

20150221-nginx.jpg


nginxで運営しているサイトでエラーページをカスタマイズする必要が出てきたんです。

ググってみると「error_page 404 /40x.html」って感じで設定すればすぐ反映されまっせ、という記事は結構見かけます。
ですが、いかんせん設定してもerror_pageが全く効かなかったんですよ。
configtestでエラーが出るわけでもなく。

もうね、error_page syntax in nginx isn't working! ですよ。
続きを読む
 
nginx最大パフォーマンスを出すための基本設定 | Node.js技術
http://nodejs.osser.jp/server/nginx-max-performance/



      /::::::─三三─\
    /:::::::: ( ○)三(○)\   
    |::::::::::::::::::::(__人__)::::  |  worker_processesをautoに設定できるとか
     \:::::::::   |r┬-|   ,/   初めて知ったーよ。
    ノ::::::::::::  `ー'´   \
現在扱っているサイトで1日30万PVを超え始めてちょっと重いかなというサーバが出てきたので、nginxのモニタリングでググってみると

How to monitor nginx - Server Density Blog
https://blog.serverdensity.com/monitor-nginx/


上記サイトにngxtopというツールを使ってモニタリングするとか書かれていたので試しに入れてみました。

ngxtopをインストールする方法はすごく簡単

curl -kL https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python
pip install ngxtop

pipが既にインストールされているなら2行目だけでおk。


そんで、ngxtopを動かしてみたらこんな感じになりました。

ngxtopのスクリーンショット



うーむ、これならApachetopでもいいんじゃないかと思った件について。

apachetopのスクリーンショット


個人的には「tail -f」でログを眺めるのが一番性に合ってたりもします。


[参考]
Python - いつの間にかpipのインストールが楽になってた件 - Qiita
http://qiita.com/who_you_me/items/831d62f396e6d66dda66


lebinh/ngxtop · GitHub
https://github.com/lebinh/ngxtop
最近画像サーバを用意する機会があったので、メモメモ。
nginx.conf上でexpireで10日間の設定。

location ~ .*\.(jpe?g|gif|png|css|js) {
    access_log off;
    expires 10d;
}
設定変えてみたりして色々試してみたけど、ずっとphpファイルにアクセスしてもダウンロードされてしまうだけと言った状況が続いてましたが、いざ解決するとブラウザのキャッシュが効いていてしまっていてサーバの設定を変更しても反映されてなかっただけっぽかったような・・・(^q^)

とりあえずコピペ用に /etc/nginx/conf.d/virtual.conf のメモメモ。

server {
  listen 80;
  server_name hogehoge.com;

  access_log  /var/log/nginx/access_hoge.log;
  error_log   /var/log/nginx/error_hoge.log;

  location / {
    root /var/www/****;
    index index.html index.htm;
  }

  location ~ \.php$ {
    fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /var/www/****/$fastcgi_script_name;
    include        fastcgi_params;
  }
}
«Prev || 1 · 2 · | Next»