Rails
nginx
SELinux
puma

nginxとrails(Puma)の接続をSELinuxに阻まれた話

まとめ

  • nginxとrailsは同じサーバー上で動かしていて
  • nginxの80ポートで受けたリクエストをrailsの3000ポートに流そうとしたら
  • connect() to 127.0.0.1:3000 failed (13: Permission denied)と言われ接続できず
  • 原因はSELinuxでしたというお話

概要

  • vagrant上のCent OS 6
  • nginxは80番ポート, 443番ポートで動かす(443はSSLラッパも)
  • RailsアプリはPumaで3000番ポートで動かす

nginxの設定

server{
    listen 80;
    server_name rails.example.com;

    location / {
        proxy_pass    http://localhost:3000;
    }
}
server{
    listen 443 ssl;
    ssl_certificate /etc/nginx/server.crt;
    ssl_certificate_key /etc/nginx/server.key;

    server_name rails.example.com;

    location / {
        proxy_pass    http://localhost:3000;
    }
}

Railsの設定

  • rails newしただけ。
  • bundle exec rails s Puma -b 0.0.0.0

アクセス確認

解決

あとがき

  • ローカルの検証環境なのでここで終わらせたが、本番環境でやるのであればselinuxの設定をしっかりしてやるべき
  • 何かの記事でnginxの実行ユーザーとrailsの実行ユーザーが違うからだというミスリードをしてしまい、頑張ってrootでrailsを動かしてみたけど、ダメでした。。。