nginxでsniがdisabledだった件

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

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

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

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

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

nginxで502 bad gateway多発なり

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

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

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

専用サーバをひさしぶりにいじるとクラウドサーバみたいに随時足してけばええかーみたいなノリが通用しないからマイッチング。

ssl_ciphers メモ

仕事上で扱ってるサイトに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でerror_pageが動かない!となった時の対処法

20150221-nginx.jpg

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

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

もうね、error_page syntax in nginx isn’t working! ですよ。

続きを読む

このページのnginxのチューニング解説が便利そうなのでメモメモ

nginx最大パフォーマンスを出すための基本設定 | Node.js技術
http://nodejs.osser.jp/server/nginx-max-performance/

      /::::::─三三─\
    /:::::::: ( ○)三(○)\   
    |::::::::::::::::::::(__人__)::::  |  worker_processesをautoに設定できるとか
     \:::::::::   |r┬-|   ,/   初めて知ったーよ。
    ノ::::::::::::  `ー’´   \

nginxの負荷が上がってきたのでngxtopを入れてみた件

現在扱っているサイトで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でバーチャルホスト設定したらphpがダウンロードされる件

設定変えてみたりして色々試してみたけど、ずっと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;
  }
}