@Keight

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

ドメイン名でlocalhostのアクセスができない。

解決したいこと

localhostではなくドメイン名でアクセスしたい。

状況

現在、AlmaLinux9にdockerを繋ぎ、Web開発に着手しようというところです。
hostsに127.0.0.1 ドメイン名と記述、保存しました。

発生している問題・エラー

ドメイン名でアクセスすると、
image.png
↑このようにアクセスできません。
ですが、localhostと入力するとアクセスできます。

これは何が問題になっていると考えられますでしょうか?
解決方法も教えていただけると幸いです🙏

0 likes

1Answer

発生しているエラーは404です。つまりHTTPアクセスはできたもののコンテンツが見つかりません。
同様のメッセージを探して見つけた以下のやり取りを見ていると nginx に指定のドメインでアクセスできるような設定を追加しないといけないように見えます。
https://community.localwp.com/t/404-the-site-you-requested-does-not-have-an-associated-route-in-local/14664/12
ただ、その設定がご利用のツール(ツールをラッピングしたDockerイメージ?)が想定した使い方なのか?変更が可能として、WEB管理ページからなのか、環境変数なのか、はたまたファイルを直接編集しないといけないのかなどはDockerイメージの説明を読んでください。

1Like

Comments

  1. hostsに127.0.0.1 ドメイン名と記述

    /etc/hosts
    127.0.0.1 localhost
    127.0.0.1 ドメイン名
    
    /etc/hosts
    127.0.0.1 localhost ドメイン名
    

    ドメイン名でアクセスすると

    http://ドメイン名:80/index.html
    

    のように、可能な限り具体的に記述すると解決が早いと思いますよ!

  2. @Keight

    Questioner

    コメントありがとうございますm(_ _)m

    状況の詳細としては、
    別案件のWordPress用に「Local」でも開発を進めようとしており、
    /etc/hostsには、
    127.0.0.1 ドメインA(WordPressのほう)
    127.0.0.1 ドメインB(今回の質問にあたるほう)
    ↑このようになっています。

    これは問題ないのでしょうか?
    やっぱり「ドメインB」でアクセスできないようで、現状では「localhost」でもアクセスできないようになっています。
    ただ、「localhost:5001」だとアクセスできるようです。

    このあたりの仕組みがイマイチわかっておらず・・・💦

  3. /etc/hosts
    127.0.0.1 localhost ドメインA ドメインB
    

    です。
    tcp/ipサーバは必ず、ipアドレス:port でバインドし、リッスンさせる必要があります。但し、hostsやDNSがあれば、ipアドレスではなく、ホスト名(localhost)で記述できます。

    私はdockerでは network指定で -net host してます。nat定義(-p 8080:80)より簡単です。

  4. @Keight

    Questioner

    127.0.0.1 localhost ドメインA ドメインB
    

    ↑このように記述してみましたが、やっぱりlocalhostでアクセスできないようです。
    ただ、Localでサーバーを立ち上げ、ドメインA(WordPress案件)でアクセスすると、WordPress案件として開発中のサイトではなく、dockerを使って開発を進めるほうのドメインBの内容が出てきてしまうようです。

    まとめると、

    ・localhostで、ドメインA/Bどちらのサイトにもアクセスできない`
    ・localhost:5001であれば、ドメインBのサイトにアクセスできる。
    ・LocalのWebサーバー(nginx)を立ち上げ、ドメインAでアクセスすると、ドメインBの内容が出てしまう。

    ドメインA(WordPress案件)
    ドメインB(WordPressではない、dockerを介した開発案件)

  5. 対策案:
    コンテナをstop或いは、dockerを停止すると docket0ブリッジに横取りされた、127.0.0.1が通常の lo:ブリッジに戻ると思います。

    名前解決:ホスト名からipアドレスを検索する仕組み

    AlmaLinux9から(コンテナ外:ホスト側)
    pingを打って名前解決の状態を確認しましょう。

    ping 127.0.0.1
    ping localhost
    ping ドメインA
    ping ドメインB


    ネットワーク構成図は?

    web--nginx--wordpress
    |
    docker(appl) でしょうか?     

    解説:
    webブラウザーは今まではnginxを経由してwordpressへlocalhost(127.0.0.1)へアクセスできました。

    しかし、dockerを導入した途端、lo:127.0.0.1が docker0ブリッジに付け替えされ、ドメインAは127.0.0.1に名前解決するが、その接続先がdocker0ブリッジの127.0.0.1なので、wordpressの応答(404)がなくなった。

    確認:
    ip address を打つとdocker0:に127.0.0.1/8が割り当てられていませんか?

  6. @Keight

    Questioner

    すみません・・・知識不足すぎて、名前解決というものの確認方法や、nginxがコンテナ内外どちらで起動しているのか(おそらく外)、location定義やnat定義というものが何なのか、正直ちんぷんかんぷんといった状態です💦
    せっかくコメントいただいているのに申し訳ないですm(_ _)m

Your answer might help someone💌