67013


お世話になっております。  
下記問題について知見のある方がいらっしゃいましたらご教示お願いします。

# 起きている問題

AWS環境で`Nginx+Unicorn+Rails`を実装し、`EC2`に`ALB`を経由してアクセスしようとしているのですが、  
`ALB`の`DNS 名`でアクセスすると`Nginx`のデフォルトページが表示されてしまいます。  
デプロイしている`Rails`のアプリケーションを開くためにはどのようにすればよろしいでしょうか。  
[![画像の説明をここに入力](https://i.stack.imgur.com/pYVr6.png)](https://i.stack.imgur.com/pYVr6.png)

# 確認したこと

nginxの構文を確認したところ、サーバー名の長さが上限を超えていました。（ALBのDNS名を設定しているため）

[code]

    $ sudo nginx -t
    [sudo] ryouya のパスワード:
    nginx: [emerg] could not build server_names_hash, you should increase server_names_hash_bucket_size: 64
    nginx: configuration file /etc/nginx/nginx.conf test failed
    
[/code]

nginx設定ファイルに『server_names_hash_bucket_size 128;』を追記したいのですが、構文エラーになってしまいます。

[code]

    #追記時のエラー_1
    $ vi coffee_app.conf
    ：
    server {
        listen 80;
        client_max_body_size 4G;
        server_name {ALBのDNS名};
        keepalive_timeout 5;
        server_names_hash_bucket_size 128; ＃この一文を追記
    ：
    
    $ sudo nginx -t
    nginx: [emerg] "server_names_hash_bucket_size" directive is not allowed here in /etc/nginx/conf.d/coffee_app.conf:15
    nginx: configuration file /etc/nginx/nginx.conf test failed
    
    #追記時のエラー_2
    $ vi coffee_app.conf
    :
    http {
        server_names_hash_bucket_size 128; ＃この一文を追記
    server {
        listen 80;
        client_max_body_size 4G;
        server_name {ALBのDNS名};
        keepalive_timeout 5;
    :
    
    $ sudo nginx -t
    nginx: [emerg] "http" directive is not allowed here in /etc/nginx/conf.d/coffee_app.conf:10
    nginx: configuration file /etc/nginx/nginx.conf test failed
    
[/code]

# 関連ファイル

coffee_app.conf(nginx設定ファイル)

[code]

    $ cat coffee_app.conf
    error_log  /var/www/rails/coffee_app/log/nginx.error.log;
    access_log /var/www/rails/coffee_app/log/nginx.access.log;
    
    upstream unicorn_server {
        server unix:/var/www/rails/coffee_app/tmp/sockets/.unicorn.sock fail_timeout=0;
    }
    
    server {
        listen 80;
        client_max_body_size 4G;
        server_name {ALBのDNS名};
        keepalive_timeout 5;
    
        # Location of our static files
        root /var/www/rails/coffee_app/public;
    
        location ~ ^/assets/ {
            root /var/www/rails/coffee_app/public;
        }
    
        location / {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_redirect off;
    
            if (!-f $request_filename) {
                proxy_pass http://unicorn_server;
                break;
            }
        }
    
        error_page 500 502 503 504 /500.html;
        location = /500.html {
            root /var/www/rails/coffee_app/public;
        }
        location = /favicon.ico {
            log_not_found off;
        }    
    }
    
    
[/code]

unicorn.conf.rb

[code]

    $ vi unicorn.conf.rb
    
      stdout_path $std_log
      timeout $timeout
      listen  $listen
      pid $pid
      # loading booster
      preload_app true
      # before starting processes
      before_fork do |server, worker|
        defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect!
        old_pid = "#{server.config[:pid]}.oldbin"
        if old_pid != server.pid
          begin
            Process.kill "QUIT", File.read(old_pid).to_i
          rescue Errno::ENOENT, Errno::ESRCH
          end
        end
      end
      # after finishing processes
      after_fork do |server, worker|
        defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection
      end
    
[/code]

# 環境

Rails 5.1.6  
Ruby 2.5.1  
Unicorn 5.4.1  
Nginx 1.12.2


CC BY-SA 4.0
2020-05-25T14:55:33.103
66981
2020-07-12T22:56:45.737
2020-07-12T22:56:45.737
4236
question
ruby-on-rails aws nginx unicorn amazon-elb
ALBを経由したアクセスができない


解決しました。

■原因１  
coffee_app.conf(nginx設定ファイル)のサーバー名がEC2のElastic IPアドレスを使用していた。  
■解決方法  
coffee_app.conf(nginx設定ファイル)のサーバー名をALBのDNS名に変更

■原因２  
coffee_app.conf(nginx設定ファイル)のサーバー名がALBのDNS名のため長文でありNginxがエラーで起動しない  
■解決方法  
/etc/nginx/nginx.conf（nginxデフォルト設定ファイル）にserver_names_hash_bucket_size 128;を追記


CC BY-SA 4.0
2020-05-26T15:24:52.273
67013
2020-05-26T15:24:52.273
66981
answer