私はこれに絞り込むと思う:
何らかの理由で、リクエストをプロキシするかどうかを判断しようとする場合、ホスト名はNginxにとって重要です。ホスト名がgit.example.com
に設定されている場合、リクエストは処理されないように見えますが、203.0.113.2
に設定されている場合は処理されます。ホスト名が重要なのはなぜですか?
リバースプロキシのIPアドレスをブラウザバーに直接入力すると、リダイレクトが実行されます。
この場合、203.0.113.2
と入力し、203.0.113.1
へのリダイレクトが実行されます。
/etc/hosts
エントリ203.0.113.2 git.example.com
を介して解決されるURLを使用する場合、リダイレクトの結果生じるページの代わりに「Ngnixページへようこそ」が表示されます。
IIUCでは、ブラウザは最初にIPアドレス203.0.113.2
をURLエントリgit.example.com
ごとに解決するため、両方ともプロキシ構成が呼び出されるはずですが、そうではありません。
これは構成です:
server {
listen 80;
server_name git.example.com;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location / {
proxy_pass http://203.0.113.1:3000;
}
}
興味深いのは、たとえば次の場所に移動できることです。
http://203.0.113.2/issues
その後、203.0.113.2
をgit.example.com
で変更すると、Nginxsの「404 not found」ページが表示されます。
昨日、nginxとgogsの設定をいじることができずに数時間過ごしました。
うまくいったのは、git
サブドメインのドメイン名のDNS構成にAレコードを設定して、正しいIPアドレスを指すようにすることでした。