2016-08-03 33 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