質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
IPv4

IPv4(Internet Protocol version 4)は、インターネットプロトコルの一つ。インターネットに繋がったコンピューターや機器を識別するためのIPアドレスを32ビット表記で表わします。しかしIPv4は、限界があるため、IPv6が次世代プロトコルとして注目されています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

3812閲覧

AWS パブリック DNS (IPv4)でアクセスできない。

pandama09396862

総合スコア6

IPv4

IPv4(Internet Protocol version 4)は、インターネットプロトコルの一つ。インターネットに繋がったコンピューターや機器を識別するためのIPアドレスを32ビット表記で表わします。しかしIPv4は、限界があるため、IPv6が次世代プロトコルとして注目されています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2020/08/09 08:10

#環境
AWS(Amazon linux AMI)
Ruby(2.6.5)
nginx
unicorn
#分からないこと
初歩的な質問かもしれませんがご回答いただけると嬉しいです。現在AWSにて環境構築中。Railsアプリを作成しています。 諸設定を終え、unicorn,nginxを起動し、アクセスを行ったところ、AWSにて指定した

Elastic IP: 54.???.??.??

ではブラウザ上でアクセスすることに成功したのですが、

パブリック DNSホスト名 (IPv4)ec2-54-???-??-??.ap-northeast-1.compute.amazonaws.com

でアクセスしようとすると

イメージ](29d573e0396b09efc23eb5051d86afe9.png)

このような画面が表示されてしまいます。Elastic IPとパブリック DNS (IPv4)では設定方法に違いがあるのでしょうか。参考にできるサイトなどがなく困っています。

#試したこと
VPC →DNSホスト DNS解決をともに有効化にチェックしてあります。Elastic IPの方では問題なくアクセスできているのでnginx unicornの設定は間違っていないかなと思います。

nginx

1# log directory 2error_log /var/www/rails/vb_app/log/nginx.error.log; 3access_log /var/www/rails/vb_app/log/nginx.access.log; 4# max body size 5client_max_body_size 2G; 6upstream app_server { 7 # for UNIX domain socket setups 8 server unix:/var/www/rails/vb_app/tmp/sockets/.unicorn.sock fail_timeout=0; 9} 10server { 11 listen 80; 12 server_name 54.???.??.??; 13 # nginx so increasing this is generally safe... 14 keepalive_timeout 5; 15 # path for static files 16 root /var/www/rails/vb_app/public; 17 # page cache loading 18 try_files $uri/index.html $uri.html $uri @app; 19 location @app { 20 # HTTP headers 21 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 22 proxy_set_header Host $http_host; 23 proxy_redirect off; 24 proxy_pass http://app_server; 25 } 26 # Rails error pages 27 error_page 500 502 503 504 /500.html; 28 location = /500.html { 29 root /var/www/rails/vb_app/public; 30 deny all; 31 } 32}

unicorn

1$worker = 2 2 $timeout = 30 3 $app_dir = "/var/www/rails/vb_app" 4 $listen = File.expand_path 'tmp/sockets/.unicorn.sock', $app_dir 5 $pid = File.expand_path 'tmp/pids/unicorn.pid', $app_dir 6 $std_log = File.expand_path 'log/unicorn.log', $app_dir 7 # set config 8 worker_processes $worker 9 working_directory $app_dir 10 stderr_path $std_log 11 stdout_path $std_log 12 timeout $timeout 13 listen $listen 14 pid $pid 15 # loading booster 16 preload_app true 17 # before starting processes 18 before_fork do |server, worker| 19 defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect! 20 old_pid = "#{server.config[:pid]}.oldbin" 21 if old_pid != server.pid 22 begin 23 Process.kill "QUIT", File.read(old_pid).to_i 24 rescue Errno::ENOENT, Errno::ESRCH 25 end 26 end 27 end 28 # after finishing processes 29 after_fork do |server, worker| 30 defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection 31 end 32

#期待される結果
DNSホスト名でブラウザ上にアクセスすることができる。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

その画面にたどり着くということはnginxまではたどり着けているということなので、問題はnginxの設定にあります。

具体的には
ec2-54-???-??-??.ap-northeast-1.compute.amazonaws.comでアクセスした場合のドキュメントルートが定義されていないため、デフォルトページが表示されているのでしょう。

server { listen 80; server_name 54.???.??.??;

server_name としてEIPは指定されていますが、ホスト名は設定に存在していないように見えます。

ngiinx server_name 複数
とかで調べてみてください。

EIPとホスト名両方で動かしたいなら(Rails側もそれで対応出来るなら)

server { listen 80; server_name 54.???.??.?? ec2-54-???-??-??.ap-northeast-1.compute.amazonaws.com;

という感じで動くと思います。

投稿2020/08/09 13:40

tanat

総合スコア18716

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pandama09396862

2020/08/10 05:29

ありがとうございます。複数のserver_nameを登録したところ期待通りアクセスができました。ベストアンサーとさせていただきます。
tanat

2020/08/10 05:36

解決して良かったです。 フィードバックありがとうございます。
guest

0

ブラウザでアクセスすると
「54.???.??.??」は「http(s)://54.???.??.??」と
補完されてアクセスしにいきます。

と言う事は、
「パブリック DNSホスト名 (IPv4)ec2-54-???-??-??.ap-northeast-1.compute.amazonaws.com」
は、
「http(s)://パブリック DNSホスト名 (IPv4)ec2-54-???-??-??.ap-northeast-1.compute.amazonaws.com」と、補完されてしまうのでアクセスできないのでは無いでしょうか。

例えば明示的に「http(s)://(IPv4)ec2-54-???-??-??.ap-northeast-1.compute.amazonaws.com」とか(http(s)://を入れる場所は色々やってみて下さい)

なんか、そんな気がします。間違ってたらすみません。

投稿2020/08/09 12:44

hana_yama_san

総合スコア923

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu_1985

2020/08/11 05:54

「アクセスできない」のではなく「アクセスはできるが、Railsのページではなくnginxのデフォルトページが表示される」なので、正しくありませんね…。 補完してくれるのはブラウザの機能ですね。むしろ、補完してくれるからこそ暗黙的にhttp(s)でアクセスができるとも言えます。 明示的にしていしたとしても、暗黙的にhttp(s)を指定したのと変わるわけでもないのでそれでは挙動は変わらないでしょう。 冒頭の通り、「アクセスはできている」のでそもそもですが問題なのはそこではないということになります。 tanatさんの回答がまさしくそのまま、です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問