2017-01-04 24 views
0

我想在auth_request的某些內部服務器前設置一個nginx反向代理來保護它們免受未經授權的用戶的攻擊。我有一個運行在192.168.1.101/scripts/auth/user.php的認證腳本,它在/ auth塊內部訪問。問題是我想使用一個命名的位置而不是匹配URI,所以不存在與內部服務(我不能控制)發生URI衝突的風險。以下作品:nginx auth_request到遠程驗證腳本

server { 
listen 80; 
server_name private.domain.com; 

location /auth { 
    proxy_pass http://192.168.1.101/scripts/auth/user.php; 
    proxy_pass_request_body off; 
    proxy_set_header Content-Length ""; 
    proxy_set_header X-Original-URI $request_uri; 

} 

location/{ 
    auth_request /auth; 
    proxy_pass http://internal.domain.com; 
} 

} 

我想不過來替換@auth的/ AUTH當我nginx的relad期間拋出一個錯誤。我已經讀過這個問題,只是用IP地址替換了auth位置內的proxy_pass,但是當我這樣做時,auth_request從不會將它傳遞給腳本。任何想法正確的方式來進行這種配置?

回答

0

由於一些名爲位置的nginx限制不能用於子請求。您可以使用internal配置選項阻止外部訪問auth位置。試試這個配置:

location = /scripts/auth/user.php { 
    internal; 
    proxy_pass http://192.168.1.101; 
    proxy_pass_request_body off; 
    proxy_set_header Content-Length ""; 
    proxy_set_header X-Original-URI $request_uri; 
} 

location/{ 
    auth_request /scripts/auth/user.php; 
    proxy_pass http://internal.domain.com; 
}