0

特定のフォルダーからコンテンツを提供するユーザーサブドメインをセットアップしようとしています:www.example.com/username提供元username.example.com(github ページと同様)。

Nginx の書き換えを見てきましたが、ブラウザにリダイレクトさせたくありません。ドメインを username.example.com にしたいのです。とにかく、この質問に対するコメントには、ホストを書き換えることはできず、プロキシのみを書き換えることができると書かれています。をセットアップしようとしましたproxy_passが、すべてのドキュメントと例は、別のホストまたはポート上のサービスに (明らかに) プロキシするために使用されていることを示していますが、私の場合は、同じホストおよびポート上の別の場所にプロキシしたいだけです。

これはこの問題に取り組む適切な方法ですか?もしそうなら、正しいNginx構成構文は何ですか?

4

1 に答える 1

0

このようなものはほとんど動作するはずです:

server {
  location / {
    # simple version
    if ( $host ~ "user1.example.com" ) {
      proxy_pass http://example.com/user1;
    }

    # generic version
    if ( $host ~ ^(.+)\.example\.com$ ) {
      proxy_pass http://example.com/$1;
    }


  }
}

しかし、プロキシされたURLの「/ user1」の部分のために、期待どおりに機能するとは思えませんが、結果はわかりません。

これを確実に行う別の方法は、同じ nginx サーバーですべてのアプリケーションを提供するか、特定のポートを他の nginx のそれぞれに割り当てることです。これを行う方法は次のとおりです。

server {
  location / {

    if ( $host ~ "user1.example.com" ) {
      proxy_pass http://127.0.0.1:8000;
    }

    if ( $host ~ "user2.example.com" ) {
      proxy_pass http://127.0.0.1:8001;
    }
  }
}

前回これを行ったのは大学のプロジェクトで、特定のプラグインを使用して処理しました.nginxでこれを実行できるプラグインもあるかもしれませんが、簡単に検索しても見つかりませんでした.

于 2011-04-07T17:37:45.517 に答える