2017-06-04 32 views
2

我開始與Nginx合作,將代理我的應用程序的代理轉換爲我的客戶網絡外部的Internet訪問。使用通配符限制nginx上的用戶

我設法使其工作,限制需要暴露的URL等,但有一件事仍然是由於完成我的工作。

我想根據用戶名限制用戶訪問。但不是爲每個用戶創建一個if,我希望使用通配符,因爲所有要阻止的用戶都以特定字符串結尾:@saspw

我的/ etc/nginx/conf的示例.D/reverseproxy.conf

server { 
    listen 80; # Proxy trafic for SAS Visual Analytics Transport Services on HTTP 
    server_name mcdonalds-va-reverseproxy.cons.sashq-r.openstack.sas.com; 
    if ($remote_user = '*@saspw'){ 
     return 401; 
    } 
    location /SASVisualAnalyticsTransport { 
    proxy_pass https://mtbis.mcdonalds.com.au:8343/SASVisualAnalyticsTransport/; 
    } 
} 

在$ REMOTE_USER 如果,我想這與它的用戶名的所有用戶在結尾得到@saspw一個401錯誤,(我將在稍後更改爲404)。

它只有當我把整個用戶名,如joe @ saspw。使用通配符(* ,?)不起作用。

有沒有辦法讓$ remote_user這樣解決通配符?

謝謝 喬

+0

Stack Overflow是編程和開發問題的網站。這個問題似乎與題目無關,因爲它不涉及編程或開發。請參閱幫助中心的[我可以詢問哪些主題](http://stackoverflow.com/help/on-topic)。也許[超級用戶](http://superuser.com/)或[Unix&Linux堆棧交換](http://unix.stackexchange.com/)會是一個更好的地方。另請參閱[我在哪裏發佈有關Dev Ops的問題?](http://meta.stackexchange.com/q/134306) – jww

回答

2

使用map nginx module

map $remote_user $is_denied { 
    default 0; 
    "~.*@saspw" 1; 
} 

server { 
    listen 80; # Proxy trafic for SAS Visual Analytics Transport Services on HTTP 
    server_name mcdonalds-va-reverseproxy.cons.sashq-r.openstack.sas.com; 
    if ($is_denied){ 
     return 401; 
    } 
    location /SASVisualAnalyticsTransport { 
    proxy_pass https://mtbis.mcdonalds.com.au:8343/SASVisualAnalyticsTransport/; 
    } 
} 

它可以讓你使用正則表達式。請注意,地圖必須在server指令之外。

+0

太棒了,問題解決了!非常感謝,羅伯特! –

+0

隨時歡迎! – Robert