web-dev-qa-db-ja.com

リダイレクトにnginxリバースプロキシを使用する

私はa.bドメイン(たとえば)を持っており、username.github.io/projectでいくつかのgithubページ(a.b/c)を提供したいと考えています。また、ブラウザのURLをa.b/cに維持し、username.github.io/projectのコンテンツを表示することも希望しています。

Nginxモジュールに次の設定があります

location /c {       
    proxy_pass http://username.github.io/project;
    proxy_redirect http://username.github.io http://a.b;
    proxy_set_header Host $http_Host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_buffering off;
}

proxy_set_header Host $http_Hostproxy_set_header Host $proxy_Hostまたは$Hostに変更すると、意図しないhttp://username.github.io/projectにリダイレクトされます。どのようにできるのか?

4
Jongsu Liam Kim

proxy_set_header Host $http_Host行を削除して、正しいHostヘッダーをプロキシターゲットに送信するだけです。

サーバーブロックでa.bがサーバー名として構成されている場合、説明のように場所のプレフィックスとproxy_redirectターゲットで末尾のスラッシュを使用すれば、proxy_passディレクティブも不要です。 ドキュメント内

Syntax:  proxy_redirect default;
         proxy_redirect off;
         proxy_redirect redirect replacement;
Default: proxy_redirect default;
Context: http, server, location

[...]

Defaultパラメータで指定されたデフォルトの置換では、locationおよびproxy_passディレクティブのパラメータを使用します。したがって、以下の2つの構成は同等です。

location /one/ {
    proxy_pass     http://upstream:port/two/;
    proxy_redirect default;
}

location /one/ {
    proxy_pass     http://upstream:port/two/;
    proxy_redirect http://upstream:port/two/ /one/;
}

[....]

だから、これはそれを行うべきです:

server {

    server_name a.b;

    location /c/ {       
        proxy_pass http://username.github.io/project/;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_buffering off;
    }

}
9
Xavier Lucas

使用する

proxy_redirect off;

だからあなたの設定は

location /c {

    proxy_pass http://username.github.io/project;
    proxy_redirect http://username.github.io;
    proxy_set_header Host username.github.io;
    proxy_set_header X-Host username.github.io;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_buffering off;
}
0
mohit