Nginx:仅允许从本地主机访问文件夹

时间:2019-02-13 08:41:40

标签: php .htaccess ubuntu nginx access

我在admin目录中有一个名为var/www/html的文件夹。

我想从公共互联网访问该文件夹,即仅允许从本地主机访问。

为此

1)在whitelist-admin目录中创建文件sites-available,并添加以下内容。

server{

location ~ /admin/.*\.php$ {
     allow 127.0.0.1;
     try_files $uri $uri/ /index.php;
     deny all;
  }

}

当我访问<public-ip>/admin时遇到403错误,但是链接<public-ip>/admin/index.php正常工作,我想禁用它。

1 个答案:

答案 0 :(得分:1)

server{

location = /admin { #its good to block the admin alone too
     allow 127.0.0.1;
     deny all;i
     try_files $uri $uri/ /index.php;
  }

location ^~ /admin/ { #block anything beggining with /admin/
     allow 127.0.0.1;
     deny all;
     try_files $uri $uri/ /index.php;
  }

location ~ \.php$ {
 include snippets/fastcgi-php.conf; 
#fastcgi_index index.php; 
# With php7.0-cgi alone: 
#fastcgi_pass 127.0.0.1:9000;
 # With php7.0-fpm: fastcgi_pass unix:/run/php/php7.0-fpm.sock; 
}


}

此配置应仅允许localhost连接,并拒绝任何管理员url上的所有其他连接。

另一方面,如果您被计算机阻止,则可能是因为您是通过公共ip而不是直接通过localhost发出请求。(例如:如果您通过Internet进行重定向,则您的ip是服务器ip,而不是localhost)。

这应该可以解决问题,如果没有,也许还有另一个捕获连接的位置,而不是这个位置。评论它是否有效或无效。

编辑:

了解它的来源:https://www.digitalocean.com/community/tutorials/understanding-nginx-server-and-location-block-selection-algorithms

^〜表示这是配置上最好的“〜”,它将是在“ =”位置之后的第一个要检查的位置。这应该使您的/ admin /位置优先于.php位置。

这应该有效。 (最后:D)