Ben*_*Ben 8 linux nginx httpd web-server
我正在尝试设置 Nginx,以便拒绝与我的数字 ip 的所有连接,除了一些任意目录和文件。因此,如果有人访问我的 IP,他们可以访问 index.php 文件,例如 phpmyadmin 目录,但如果他们尝试访问任何其他目录,他们将被拒绝。
这是我的服务器块nginx.conf
:
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm index.php;
}
location ~ \.php$ {
root html;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /srv/http/nginx/$fastcgi_script_name;
include fastcgi_params;
}
}
Run Code Online (Sandbox Code Playgroud)
我将如何进行?非常感谢!
kol*_*ack 12
最简单的方法是首先拒绝所有访问,然后仅授予对您想要的那些目录的访问权限。正如 ring0 所指出的,您可以在 listen 指令上使用默认(0.8 中的 default_server)标志。但是,如果您已经有一台服务器,您想将其用作对主机的未知命名访问的默认值,您也可以只捕获没有主机头的请求,或者使用类似这样的服务器的 IP 地址来捕获请求(将 1.2.3.4 替换为您的服务器的ip:
upstream _php {
server unix:/var/run/php-fpm/php-fpm.sock;
}
server {
server_name "" 1.2.3.4;
root /path/to/root;
index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# deny everything that doesn't match another location
location / { deny all; }
# allow loading /index.php
location = / { } # need to allow GET / to internally redirect to /index.php
location = /index.php { fastcgi_pass _php; }
# allow access to phpmyadmin
location /phpmyadmin/ { } # Allow access to static files in /phpmyadmin/
location ~ ^/phpmyadmin/.*\.php$ { fastcgi_pass _php; } # phpmyadmin php files
}
Run Code Online (Sandbox Code Playgroud)
fastcgi_params 将被 fastcgi_pass 的两个位置继承,并且只允许 /index.php 和 /phpmyadmin/ 。我还为 php 添加了一个上游块,这使您将来需要添加或更改它时更容易。
归档时间: |
|
查看次数: |
56526 次 |
最近记录: |