リスニング ポートまたは 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;
}