2016-08-03 32 views
0

我將apache遷移到nginx。 在Apache中,我把.htaccess文件夾內,但nginx沒有這個。Nginx允許用戶代理特定的目錄

我的文件夾/ admin和它僅可以通過用戶代理訪問:管理員 我做的:

location ~ /admin { 
if ($http_user_agent !~* "Administrator") { 
    return 404; 
} 
try_files $uri =404; 

}

而且它的工作原理,但.php文件不會被解釋。

我該怎麼做?

編輯:

server { 
listen  80; 
server_name myserver.com; 

root   /usr/share/nginx/html; 

location/{ 
} 

location ~ /admin { 
    if ($http_user_agent !~* "Administrator") { 
     return 404; 
    } 
    try_files $uri =404; 
} 

location ~ \.php$ { 
    try_files $uri =404; 
    fastcgi_pass unix:/run/php-fpm/php-fpm.sock; 
    fastcgi_index index.php; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    include fastcgi_params; 
} 

include /etc/nginx/default.d/*.conf; 

}

+0

檢查編輯.... –

回答

0

沒有與有關代理的回調,而不是"Administrator"規範問題應該是(Administrator)休息的代碼似乎是確定。如果您另外添加了try_files $uri =404;,則將其刪除,因爲它不需要。返回404已經定義。

嘗試測試之前,這一個

server { 
listen  80; 
server_name myserver.com; 
root /usr/share/nginx/html; 
location ~ \.php$ { 
try_files $uri =404; 
fastcgi_pass unix:/run/php-fpm/php-fpm.sock; 
fastcgi_index index.php; 
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
include fastcgi_params; 
if (!-e $request_filename) { 
    rewrite ^.*$ /index.php last; 
    } 
} 
location ~ /admin { 
if ($http_user_agent !~* "Administrator") { 
    return 404; 
    } 
    try_files $uri =404; 
} 
include /etc/nginx/default.d/*.conf; 
} 

重啓nginx的服務!

+0

問題是當我訪問.php文件裏面/ admin,在我的瀏覽器中顯示php代碼。 我想這是因爲.php配置是在另一個位置 – Alexis

+0

你將能夠發佈完整的代碼,因爲如果任何 –

+0

'服務器監聽80; \t server_name myserver.com; \t root/usr/share/nginx/html; \t位置/ { \t} \t位置〜/管理員{ \t \t如果($ HTTP_USER_AGENT〜* 「管理員」!){ \t \t \t回404; \t \t} \t \t try_files $ uri = 404; \t} \t位置〜\ .PHP $ { \t \t try_files $ URI = 404; \t \t fastcgi_pass unix:/run/php-fpm/php-fpm.sock; \t \t fastcgi_index index.php; \t \t fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; \t \t包括fastcgi_params; \t} \t include /etc/nginx/default.d/*.conf; }' – Alexis