1

リスニング ポートまたは server_name ではなく、場所に基づく nginx プロキシをセットアップしたいと考えています。

upstream cluster
{
    server cluster1:8080;
    server cluster2:8080;
}
server
{
    listen 80;
    server_name mydomain.com;
    location /hbase
    {
        proxy_pass http://cluster;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
    }
}

これはおそらく、私が見逃している本当に単純なものであることを知っています。基本的にルーティングは機能しているように見えますが、hbase 部分なしでトラフィックをサーバーにルーティングする必要があるときに、実際には「http://cluster1:8080/hbase」を呼び出すことになります。

書き換えルールは機能しますが、nginx で書き換える方法が見つからないようです。リダイレクトすることはできますが、実際のポートは外部から見えないようにしたいと考えています。

これは完全に機能しますが、ポート 80 でのみトラフィックを許可したいと考えています。

upstream cluster
{
    server cluster1:8080;
    server cluster2:8080;
}
server
{
    listen 555;
    server_name mydomain.com;
    location /
    {
        proxy_pass http://cluster;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
    }
}

正規表現を使用して、転送されたリクエストから hbase を削除する方法はありますか?

答え:

location /hbase
{
    rewrite  ^/hbase$|^/hbase/$|^/hbase/(.*)$ /$1  break;
    proxy_pass http://cluster;
}
4

1 に答える 1

1

nginxには効率的な書き換えがあります。以下はうまくいくはずです(試していませんでした)

  location /hbase
  {
     rewrite  ^.*$  /  break;
     proxy_pass http://cluster;
于 2013-01-18T17:27:18.550 に答える