web-dev-qa-db-ja.com

サブフォルダーを使用するnginx proxy_pass

わかりました。このタスクは単純なはずですが、機能させることができません。ドメイン名の後に(実際にはそのドメイン名のIPの後に)サブフォルダーを配置すると、同じサーバー上の特定のポートにリダイレクトされます。基本的に、多くのポートを使用する必要をなくしたいと思います。

これがそのための私のnginx設定です

server {
    listen 80;

    index index.html index.htm index.nginx-debian.html index.php;

    server_name aaa.bbb.ccc.ddd;

    location ^~ /app2 {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $Host;
        proxy_pass http://aaa.bbb.ccc.ddd:8001;
    }
}

したがって、aaa.bbb.ccc.ddd/app2にアクセスすると、これを http://aaa.bbb.ccc.ddd:8001 に解決したいと思います。

これはおそらく非常に複雑であることに注意してください。ここで何が欠けていますか?

パットありがとう

11
pAt84

これをリバースプロキシの質問としてタグ付けしたので、ユーザーがブラウザにhttp://aaa.bbb.ccc.ddd/app2のURLのみを表示するようにリクエストをプロキシする必要があることを想定しています。

locationブロックを次のように変更できます。

location ~/app2(.*)$ {
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $Host;
    proxy_pass http://aaa.bbb.ccc.ddd:8001$1;
}

ここでは、/app2から$1変数の後のURI部分をキャプチャし、proxy_passディレクティブで使用します。

12
Tero Kilkanen