1
我想設置一個基於位置而不是偵聽端口或server_name的nginx代理。基於位置的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;
}
}
我知道這可能是一個非常簡單的東西,我失蹤了。基本上路由似乎工作,但它實際上最終調用「http:// cluster1:8080/hbase」時,它應該只是將流量路由到服務器沒有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;
}
謝謝。我曾嘗試過,但並未考慮將所有三種情況都添加到正則表達式中。 – Eulalie367
噢好吧,不知道'/ hbase /'後面有什麼東西。很高興它的工作! –