さくらVPS/CentOS 6.4 nginx導入[Railsサーバへの道]

さくらVPS 2GB SSDのCentOS 6.4をセットアップしてイケているRailsサーバに仕上げるまでのシリーズです。第5回はnginxの導入です。nginxはApacheと比べると歴史は浅いですがRailsで使うのもかなりメジャーになってきました。もしApacheの方が、好みの方はさくらVPS/Cent OS 6.4へのApache導入を試してみてください!

(07-10 20:30) ELB経由のnginxでクライアントのIPを取得する方法を追記


🐡 リポジトリの登録

次のコマンドを実行して、nginxのリポジトリを登録。

sudo rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

nginxのリポジトリ登録確認。

yum list nginx --disablerepo=* --enablerepo=nginx
nginx | 2.9 kB 00:00
nginx/primary_db | 24 kB 00:00
Available Packages
nginx.x86_64 1.4.2-1.el6.ngx nginx

😎 nginxのインストール

次のコマンドを実行してnginxをインストール。

sudo yum install -y nginx --disablerepo=* --enablerepo=nginx

🐠 nginxの設定

nginxを起動および、自動起動を設定。

sudo service nginx start
sudo chkconfig nginx on

自動機能の確認。次のようになっていれば成功。

chkconfig --list nginx
nginx 0:off 1:off 2:on 3:on 4:on 5:on 6:off

実際のRailsへの利用は僕自身の検証が追いついていません。という申し訳ない状況です。完熟トマトというブログのCentOS 6.3にRails実行環境を構築する(Nginx+Rails+Unicorn+PostgreSQL)がとても良くまとまっていてわかりやすいので、ぜひご覧ください。あらためて検証をやりきったらアップデートします!

🏀 オレオレ証明書でSSLの導入の手順

オレオレ証明書を使ってSSLをとりあえず導入する手順です。

まずはオレオレ証明を作成。

sudo su -
mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.csr
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

作った証明書をnginx.conf側に反映。

server {
# 以下を443側に追記
listen 443 default ssl;
ssl on;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
}

🗻 httpのアクセスをhttpsにリダイレクトさせる

nginx.confを以下のように書き換え!

server {
listen 80;
server_name example.com;
return 301 https:/$host$request_uri;
}
server {
listen 443 default ssl;
server_name example.com;
root /var/rails/example.com;
ssl on;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
location / { proxy_pass http://127.0.0.1:5001; }
}

🐹 AWS ELB経由でnginxにつなげる場合にクライアントIPを取得する方法

AWS ELB経由でnginxにつなげる場合にクライアントIPを取得する方法です。正直言って、かなりハマったので忘備録がてらのメモです!

http {
# 以下のコードをhttp/serverなどの中に追記
real_ip_header X-Forwarded-For;
set_real_ip_from 0.0.0.0/0;
}

IP制限などを行いたいときに超便利です!

🎉 参考リンク

nginx で ssl 設定をする - dogmap.jp

CentOS-6へ最新版のnginxを3分でインストールする方法 - Y-Ken Studio - 日々クリエイション

🐮 変更来歴

(13/09/24 07:45) 新規作成

(14/07-10 20:30) ELB経由のnginxでクライアントのIPを取得する方法を追記

(14/07/24 13:55) SSLの導入手順を追記

📚 おすすめの書籍