web-dev-qa-db-ja.com

IPアドレスでGitHubPagesWebサイトにアクセスできません

私のカスタムドメインはGitHub Pagesで機能しますが、実際にどのように機能するかを理解したいと思います。

この例では、カスタムドメインをまったく使用していません。GitHubPagesリポジトリにCNAMEファイルが含まれていません。


例えば。 CNAMEファイルのないGitHubPagesリポジトリがある場合:example.github.io

example.github.ioに対するDNS要求は185.31.16.133に解決されます

example.github.ioに対してpingコマンドを実行すると、同じIPアドレスが返されます:185.31.16.133

ブラウザでウェブサイトhttp://example.github.ioを開くと、ブラウザに実際のウェブサイトのコンテンツが表示されます。

代わりにIPアドレス185.31.16.133を入力するか、Postmanなどのツールを使用してHTTP GETリクエストを行うと、GitHub Pages404エラーだけが表示されます。

IPアドレスでGitHubユーザーページに直接アクセスできないのはなぜですか?ブラウザは、HTTPリクエストを行う前に、URLのホスト名部分をDNSルックアップのIPアドレス応答に置き換えると思いました。

2
Jay Zelenkov

はい、WebブラウザはDNSルックアップを実行し、そのIPアドレスを接続に使用します。また、元のホスト名を取得して、ホストhttpヘッダーの一部として送信します。これにより、Webサーバーは同じIPアドレスから複数のWebサイトにサービスを提供できます。

curl http://185.31.16.133/

vs.

curl --header "Host: jzelenkov.github.io" http://185.31.16.133/
4
andol

Github上のすべてのプロジェクトに一意のIPがある場合でも、そのIP上にあるサイトはあなたのサイトだけではないと思います。そのサーバーには、おそらくgithubユーザーのサイトが何百も構成されています。

そして、おそらくそれらは仮想ホスト構造を使用して構成されています。その場合、Apacheサーバーには次の形式のエントリが多数あります。

    <VirtualHost *:80>
    DocumentRoot "/blablabla"
    ServerName example.gihub.io

   <Directory "/blablabla">
      ....
   </Directory>

   </VirtualHost>

使用するIPは、サイトをホストするサーバーのIPです。非常に多くのサイトが同じIPを共有しています。

これが、ページに直接アクセスできない理由です。そしておそらく、有効な仮想ホストを使用しないすべてのリクエストに404エラーを設定します。そして、これが404 notfoundエラーを受け取る理由です。

Ipを使用してページに直接アクセスするには、curl--headerなどを使用してandolanswerを参照してください。

1
Ivan