nginx允许一个IP,然后拒绝所有IP不起作用

时间:2019-08-27 05:46:23

标签: nginx

在调试和调整时,我暂时将站点限制为单个IP。不幸。 nginx允许我的IP,然后否认一切似乎都没有做!

我知道有连接的“拒绝” IP,因为以下内容返回了许多IP:

netstat -anp | grep -E ":80|:443" | grep ESTABLISHED

我的最小nginx.conf:

server {
    server_name myserver.com;
    root /var/www/myserver;

    index index.php;

    include global/restrictions.conf;

    allow 107.77.323.112; # allowed IP address
    deny all;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
            #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
            include fastcgi.conf;
            fastcgi_intercept_errors on;
            fastcgi_pass unix:/var/run/php7.2-fpm.sock;
            fastcgi_buffers 16 16k;
            fastcgi_buffer_size 32k;
            fastcgi_connect_timeout 60;
            fastcgi_send_timeout 300;
            fastcgi_read_timeout 300;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
            expires max;
            log_not_found off;
    }

    listen 443 ssl;
    ssl_certificate /home/admin/myserver_com.chained.crt;
    ssl_certificate_key /home/admin/-myserver.com.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!MD5;
}

1 个答案:

答案 0 :(得分:0)

nginx拒绝不会阻止连接,因此会进行简短连接以返回403错误。

netstat结果可能看起来好像有许多连接随时间打开,但是仔细观察会发现,即使连接数保持相对恒定,端口号也在改变。相同的客户端只是在尝试连接。

这个小bash代码段在分析连接时非常有用。

sudo netstat -anp | grep -E ":80|:443" | grep ESTABLISHED | cut -c 43-64 | uniq | sort

我多次运行它,每次都等待并将其输出到另一个文件。然后我随时间比较了文件以找到常见的行:

grep -Fxf t1.txt t2.txt

我发现从t1.txt到t2.txt可能还有一些连接,但是过了一会儿,t1.txt与t3.txt却没有剩余的连接。换句话说,所有的连接都是新的。