Назад | Перейти на главную страницу

Это все, что мне нужно, чтобы запретить IP-адрес в nginx?

Я пытаюсь заблокировать и перенаправить весь трафик на сайт. Это правильный способ сделать это?

EDIT: я хотел бы заблокировать некоторые диапазоны IP-адресов и перенаправить их на URL-адрес.

РЕДАКТИРОВАТЬ: блокируя в nginx, предотвращает ли это ВСЕ доступ к серверной части Apache, чтобы он больше не попадал?

server {
          error_log /var/log/nginx/vhost-error_log warn;
          listen 1.2.3.4:80;
          server_name domain.com www.domain.com;
          access_log /usr/local/apache/domlogs/domain.com-bytes_log bytes_log;
          access_log /usr/local/apache/domlogs/domain.com combined;
          root /home/user/public_html;
          location / {
                deny 220.181.0.0/16;
                deny 124.115.0.0/16;
                deny 1.202.0.0/16;
                deny 208.115.0.0/16;
                deny 199.58.0.0/16;
                deny 220.181.0.0/16;
                deny 124.115.0.0/16;
                deny 83.149.0.0/16;
                deny 178.77.0.0/16;
                deny 65.55.0.0/16;
                deny 123.125.0.0/16;
                deny 82.128.0.0/16;
                deny 157.55.0.0/16;
                deny 199.0.0.0/8;
                deny 212.90.0.0/16;
          location ~.*\.(3gp|gif|jpg|jpeg|png|ico|wmv|avi|asf|asx|mpg|mpeg|mp4|pls|mp3|mid|wav|swf|flv|html|htm|txt|js|css|exe|zip|tar|rar|gz|tgz|bz2|uha|7z|doc|docx|xls|xlsx|pdf|iso)$ {
          expires 1d;
          try_files $uri @backend;
          }
          error_page 405 = @backend;
          add_header X-Cache "HIT from Backend";
          proxy_pass http://1.2.3.4:8081;
          include proxy.inc;
          }
          location @backend {
          internal;
          proxy_pass http://1.2.3.4:8081;
          include proxy.inc;
          }
          location ~ .*\.(php|jsp|cgi|pl|py)?$ {
          proxy_pass http://1.2.3.4:8081;
          include proxy.inc;
          }
          location ~ /\.ht {
          deny all;
          }
        }

Что для вас означает «блокировать и перенаправлять»? Ваша опубликованная конфигурация тоже не работает. Он выборочно блокирует набор определенных запрашивающих cidr, но определенно не «всех». Те, кого он не блокирует, обслуживает /home/user/public_html если uri совпадает с некоторыми суффиксами, в противном случае он перенаправляет запрос на какой-то бэкэнд через proxy_pass. Он откажет всем, запрашивающим uri, который соответствует /.ht.

Если вы хотите перенаправить, вы можете использовать return директива для возврата статуса 301 или 302 и целевой URL, который вы также хотите перенаправить.

Чтобы просто заблокировать все, скажите:

location ^~ / {
  deny all;
}

Или просто выключите свой веб-сервер :)