Nginx允许用户代理特定目录

时间:2016-08-03 07:22:32

标签: .htaccess nginx

我将apache迁移到nginx。 在apache中我将.htaccess放在文件夹中,但是nginx没有这个。

我有文件夹/管理员,只能由用户代理访问:管理员 我这样做:

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;

}

1 个答案:

答案 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服务!