前提・実現したいこと
激烈初心者です。ConohaVPSというもので遊んでいます。動的ページフレームワークSinatraと静的ページフレームワークMiddlemanを併用したいと思っています。WebサーバーにはNginx、アプリケーションサーバーにはUnicornというものを使っています。現時点ではブラウザ上で IPアドレス:8080と打つとSinatraで生成されたサイトが、IPアドレス:4567と打つとMiddlemanで生成されたサイトが出てきます。私の勘違いでなければSinatraはUnicorn経由で動作しているはずです。
今後検索結果などはSinatraで、トップページやフィードはMiddlemanで出力するみたいな運用をしたいと思っています。例えば独自ドメインを導入した際には「hogehoge.jp」や「hogehoge.jp/feed.xml」、「hogehoge.jp/about.html」とするとMiddlemanで生成してルートディレクトリ(/var/www/html/)に転送されたhtmlファイルやxmlファイルを表示し、「hogehoge.jp/search/単語」だとか「hogehoge.jp/date/2019-05-01」とするとSinatraで生成されたサイトを表示させたいとします。
このような場合にはどのような知識が必要で、何のどういう設定が必要なのでしょうか。また、ドメインなる物を買った事が無いのでこのような設定をする際に必要な機能等があれば。長文で申し訳ありませんが教えていただければ幸甚に存じます。
該当のソースコード
$ sudo emacs /etc/nginx/nginx.conf
worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # SSL Settings ## ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; gzip_vary on; # gzip_proxied any; # gzip_comp_level 6; # gzip_buffers 16 8k; # gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml applica\ tion/xml+rss text/javascript; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; upstream unicorn { server unix:/var/www/html/tmp/sockets/unicorn.sock fail_timeout=0; } server { server_name IP.ADD.RE.SS; # Sinatraのpublicディレクトリの絶対パスを指定します root /var/www/html; # リクエストが通るポート番号を指定します listen 8080; # クライアントからのリクエストの最大値を設定します client_max_body_size 4G; # サーバーはこの時間を過ぎたら接続を閉じます keepalive_timeout 5; location / { try_files $uri @app; } location @app { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; # pass to the upstream unicorn server mentioned above proxy_pass http://unicorn; } } }
/var/www/html/config.ru
require './index.rb' run Sinatra::Application
/var/www/html/unicorn.rb
# coding: utf-8 @dir = "/var/www/html/" worker_processes 1 # CPUのコア数に揃える working_directory @dir preload_app true timeout 30 listen "#{@dir}tmp/sockets/unicorn.sock", :backlog => 64 pid "#{@dir}tmp/pids/unicorn.pid" #pidを保存するファイル # unicornは標準出力には何も吐かないのでログ出力を忘れずに stderr_path "#{@dir}log/unicorn.stderr.log" stdout_path "#{@dir}log/unicorn.stdout.log"
試したこと
なし
補足情報(FW/ツールのバージョンなど)
$ nginx -v
nginx version: nginx/1.14.0 (Ubuntu)
$ unicorn -v
unicorn v5.5.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。