私のカスタムドメインは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アドレス応答に置き換えると思いました。
はい、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/
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を参照してください。