2017-06-16 13 views
2

私はherokuの無料環境でnginxサーバーを起動しようとしています。私はどのようにどのようにやチュートリアルを準備が、私はそれを実行しないでください。heroku + nginx on port 80

まず初めに、ポート80でデフォルトのWebサーバーとしてnginxを起動したいと思います。その後、下線エクスプレスサーバー(他のherokuインスタンス)のプロキシとしてconfigure nginxを設定します。 4日間、私はherokuのインスタンスでnginxだけを起動しようとしています。私はいつもポート80で始めることを許可されていない例外を得ています。 いくつかの設定を調整するために、nginx-buildback(https://github.com/moohkooh/nginx-buildpack)を(https://github.com/benmurden/nginx-pagespeed-buildpack)からフォークしました。私がポート2555でheroku bash経由でnginxを実行している場合、nginxが起動していますが、Webブラウザで接続が拒否されます。

私は、ログ

State changed from starting to crashed 

私ダイノ

web: bin/start-nginx 

マイnginx.config.erbのProcfileも

daemon off; 
#Heroku dynos have at least 4 cores. 
worker_processes <%= ENV['NGINX_WORKERS'] || 4 %>; 

events { 
    use epoll; 
    accept_mutex on; 
    worker_connections 1024; 
} 

http { 
    gzip on; 
    gzip_comp_level 2; 
    gzip_min_length 512; 

    server_tokens off; 

    log_format l2met 'measure#nginx.service=$request_time request_id=$http_x_request_id'; 
    access_log logs/nginx/access.log l2met; 
    error_log logs/nginx/error.log; 

    include mime.types; 
    default_type application/octet-stream; 
    sendfile on; 

    server { 
     listen <%= ENV['PORT'] %>; 
     server_name _; 
     keepalive_timeout 5; 
     root /app/www; 
     index index.html; 

     location/{ 
      autoindex on; 
     } 
    } 
} 

私は上のエラーメッセージを取得ダイノ経由でnginxの起動した場合PORT変数を80に設定

heroku config:get PORT 
80 

いくつかの他の構成:

heroku config:get NGINX_WORKERS 
8 
heroku buildpacks 
https://github.com/heroku/heroku-buildpack-multi.git 
heroku stack 
cedar-14 

マイ.buildpackファイル

https://github.com/moohkooh/nginx-buildpack 
https://codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/ruby.tgz 

私もHerokuのは私がいただきまし間違っ80に設定私の変数を使用していけないことを、推測を持っていますか?誰にでも大きな感謝。ところで

:ポート1000年でエラーなしで実行している私の特急サーバー(テストのために私はエラーなしでポート80でも、それを開始)

+1

ポートを80に強制しないで試しましたか?私はHerokuが設定するので、ポートを変更しません。 "各Webプロセスは単純にポートにバインドし、そのポートに入ってくるリクエストをリッスンします。バインドするポートはHerokuによってPORT環境変数として割り当てられます。 - https://devcenter.heroku.com/articles/runtime-principles – adibble

+0

はい、私は試しています。 Herokuはnginxを「ランダム」ポートで起動しますが、ブラウザ経由でも応答はありません。私が読んでいるように、ポートを80に設定すると、ポート80または環境上のポートセットで開始する必要があります。 – moohkooh

答えて

1

私はこの構成では私の問題を解決しました。

daemon off; 
#Heroku dynos have at least 4 cores. 
worker_processes <%= ENV['NGINX_WORKERS'] || 4 %>; 

pid nginx.pid; 

events { 
    worker_connections 1024; 
} 

http { 
    gzip on; 
    gzip_comp_level 2; 
    gzip_min_length 512; 
    server_tokens off; 
    log_format l2met 'measure#nginx.service=$request_time request_id=$http_x_request_id'; 
    access_log logs/nginx/access.log l2met; 
    error_log logs/nginx/error.log; 

    include mime.types; 

    server { 
     listen <%= ENV['PORT'] %>; 
     server_name localhost; 
     port_in_redirect off; 
     keepalive_timeout 5; 
     root /app/www; 
     index index.html; 

     location/{ 
      autoindex on; 
     } 
    } 
} 
+0

moohkooh、あなたは@adibbleの助けを借りてこの解決策を達成しました。彼らはあなたに正しい方向を向けるための信用を与えることをお勧めします。少なくとも、答えに彼らの助けを言いなさい。 – Myst

+0

はい、主な問題は私のnginx.confファイルでした。 default_type application/octet-streamを削除した後。アプリケーションはクラッシュすることなく起動します。ポート設定はここでは問題ではありませんでした。 – moohkooh