web-dev-qa-db-ja.com

nginxを使用して内部サーバーにリクエストをプロキシする方法は?

http:// localhost:30 で自分のリポジトリ(Gitalistインスタンス)を表示するようにWebサーバーをセットアップし、nginxを使用してプロキシをセットアップしたいと思います。

DOMAIN/git /のようなURIを受け取ったときに、リクエストがリポジトリビューにプロキシされるようにしたい。

現在のnginx構成は次のように宣言されています。

location /git {
    proxy_pass http://localhost:3000/;
}

リクエストはサーバーにプロキシされますが、 " http:// localhost:3000/logo.png "をポイントしているため、画像/リンクやCSSは解決できません。

[〜#〜]編集[〜#〜]

実際のサーバーアドレスにproxy_passした場合、機能します。

 location /git {
        proxy_pass              http://192.168.1.111:3000/;
 }

しかし、プロキシを行う際に実際のサーバーアドレスを隠す方法が必要です。

3
eliocs

URIが絶対的な場合、解決策はNginx HTTPSubModule を使用するか、その mod_proxy_html モジュールでApacheに切り替えることです。どちらもバックエンドサーバーから受信した応答を変更し、いくつかの置換を行うことができます。

2
mishka

Nginx wikiにある解決策を試してください:

http://wiki.nginx.org/LikeApache

結果は次のようになります。

location /git {
    proxy_set_header X-Forwarded-Host $Host;
    proxy_set_header X-Forwarded-Server $Host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass              http://192.168.1.111:3000/;
}
5
erickzetta

リクエストで送信されたホストヘッダーを使用して絶対リンクを生成している場合は、次のように追加して 次にNginx を設定して、元のホストヘッダーの値に設定します。

proxy_set_header Host $http_Host;

ロケーションブロックに。

0
Danack

パスが適切にプロキシされていません。このリンクを参照してください:

http://www.ubuntugeek.com/using-nginx-as-a-reverse-proxy-to-get-the-most-out-of-your-vps.html

0
CoderMD666

アプリケーションがグラフィックス/スクリプト/ページへの絶対パスを含むHTMLを生成し、ブラウザがそれを要求する場合、アプリケーションもブラウザも/gitパスでアプリケーションを非表示にしようとしていることを認識していないため、ブラウザはそれらをロードしようとします絶対パス。 NginxがHTMLを書き換えることができればアイデア全体は機能しますが、機能しません。

0