• Как ограничить доступ к /user на сервере с nginx в Drupal?

    @Rokis Автор вопроса
    В логах нет никаких указаний на какой-либо файл. Вот пример того, что выводит:

    2017/03/19 22:38:27 [error] 5100#5100: *5 open() "/var/www/mysite.ru/user" failed (2: No such file or directory), client: 11.111.111.111, server: mysite.ru, request: "GET /user HTTP/1.1", host: "mysite.ru"


    Конфиг сайта:
    server {
        listen 80;
        listen [::]:80;
        root /var/www/mysite.ru;
        server_name mysite.ru www.mysite.ru;
    
        location / {
            try_files $uri /index.php?$query_string;
    }
     #location @rewrite {
       #     rewrite ^/(.*)$ /index.php?q=$1;
      #  }
        location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }
    
      location ~ (^|/)\. {
         return 403;
       }
    
    location ~ ^/sites/.*/private/ {
    return 403;
    }
    
    location ~* ^/.well-known/ {
    allow all;
    }
    
    location ~* \.(ttf|ttc|otf|eot|woff|woff2|font.css|css|js)$ {
        add_header Access-Control-Allow-Origin *;
    }
    
    
    location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf|css|js)$ {
    access_log off;
    log_not_found off;
    try_files $uri $uri/ /index.html;
    expires max;
    }
    
    location = /favicon.ico {
    log_not_found off;
    access_log off;
    }
    
    location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
    }
    location ~* \.(txt|log)$ {
    include /etc/nginx/conf.d/wpip-block.conf; #здесь allow и deny
    include /etc/nginx/conf.d/php.conf; #тут php
    }
    location /admin {
    include /etc/nginx/conf.d/wpip-block.conf;
    include /etc/nginx/conf.d/php.conf;
    }
    location /user {
    include /etc/nginx/conf.d/wpip-block.conf;
    include /etc/nginx/conf.d/php.conf;
    }
    location ~ \..*/.*\.php$ {
    return 403;
    }
    location ~ /vendor/.*\.php$ {
    deny all;
    return 404;
    }
    }


    А это nginx.conf

    user www-data;
    worker_processes auto;
    pid /run/nginx.pid;
    
    events {
            worker_connections 1024;
            multi_accept on;
    }
    
    http {
            #limit_conn_zone $binary_remote_addr zone=slimits:5m;
            #limit_conn slimits 100;
            sendfile on;
            tcp_nopush on;
            tcp_nodelay on;
    
            keepalive_timeout 30;
            keepalive_requests 100;
    
            send_timeout 2;
            types_hash_max_size 2048;
            server_tokens off;
            reset_timedout_connection on;
    
            client_header_buffer_size 1k;
            client_header_timeout 10;
            client_body_buffer_size 10K;
            client_body_timeout 10;
            client_max_body_size 8m;
            large_client_header_buffers 2 2k;
            index index.php index.html index.htm;
    
            server_names_hash_bucket_size 64;
            # server_name_in_redirect off;
    include /etc/nginx/mime.types;
            default_type application/octet-stream;
    
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
            ssl_prefer_server_ciphers on;
    
            access_log  /var/log/nginx/access.log;
            error_log /var/log/nginx/error.log;
    
            gzip on;
            gzip_disable "msie6";
            gzip_static on;
            gzip_vary on;
            gzip_proxied any;
            gzip_comp_level 5;
            # gzip_buffers 16 8k;
            gzip_http_version 1.1;
            gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    
            open_file_cache max=200000 inactive=20s;
            open_file_cache_valid 30s;
            open_file_cache_min_uses 2;
            open_file_cache_errors on;
    
            #include /etc/nginx/conf.d/*.conf;
            include /etc/nginx/sites-enabled/*;
    }
  • Как ограничить доступ по IP к wp-login.php на сервере через iptables?

    @Rokis Автор вопроса
    Спасибо, что объяснили. Теперь мне стало понятно. Оставлю всё как есть, а если захочется экзотики, то воспользуюсь Вашим советом с админкой на отдельном порту.
  • Как ограничить доступ по IP к wp-login.php на сервере через iptables?

    @Rokis Автор вопроса
    А на каком уровне лучше всего ставить это ограничение? На nginx оставить? Я подумал, что iptables фильтрует запросы до nginx и он будет эффективней в плане экономии ресурсов. Поэтому и задал данный вопрос.
  • Как ограничить доступ по IP к wp-login.php на сервере через iptables?

    @Rokis Автор вопроса
    Какие например подойдут для данной задачи? Я вообще себе логику даже очень плохо представляю подобных блокировок в firewall.

    В iptables я представлял блокировку, что-то типа:

    iptables -A INPUT -p tcp -s 11.11.111.11 -m multiport --dports 80 string --string 'POST /wp-login.php' -j ACCEPT

    и
    iptables -A INPUT -p tcp -m multiport --dports 80 string --string 'POST /wp-login.php' -j DROP


    Но а если там не POST, а GET... Или другой ещё какой-нибудь, то это не поможет.
  • Как компактно написать правила блокировки по IP в Nginx?

    @Rokis Автор вопроса
    Если в iptables можно блокировать точно так же, как и у меня в location, то это просто замечательно. Не могли бы вы привести пример?
  • Как компактно написать правила блокировки по IP в Nginx?

    @Rokis Автор вопроса
    Получится намного компактнее, спасибо. Но мне кажется, что можно ещё все 4 локейшена объединить в один. С синтаксисом не могу разобраться никак, чтобы это сделать.
  • Какие есть инструменты для мониторинга состояния сайтов средствами VPS сервера?

    @Rokis Автор вопроса
    Да уж. Это перебор для моих целей. Ладно, спасибо за ответ. Действительно проще, что-то стороннее использовать.
  • Какие есть инструменты для мониторинга состояния сайтов средствами VPS сервера?

    @Rokis Автор вопроса
    Да я поэтому и спрашиваю. Думал может какое-либо готовое решение для сервера есть, которое будет парсить ошибки например, из логов, и сообщать об этом администратору.
  • Как сделать ISO образ из настроенного VPS сервера?

    @Rokis Автор вопроса
    Думаю это то, что нужно! Только печаль-беда, что пакеты зависимостей поддерживаются только до версии ubuntu 15.10 как я понял. А у меня 16.04 стоит. Хотел с тестового репозитория скачать, но тоже ничего не вышло. Вручную наверное это всё можно сделать, но потом же обновлять всё тоже руками надо будет.

    Спасибо за информацию! Не подскажите, может есть какие-либо другие аналоги? Clonezilla подойдёт для тех же целей?
  • Как сделать ISO образ из настроенного VPS сервера?

    @Rokis Автор вопроса
    Получается мне нужно физически иметь доступ к серверу?
  • Как сделать резервный сервер VPS?

    @Rokis Автор вопроса
    Обязательно воспользуюсь. То, что вы предложили - мне вполне подходит. Много нового узнал. Спасибо вам.
  • Как сделать резервный сервер VPS?

    @Rokis Автор вопроса
    Упс, я то думал... :) Ладно, оставлю этот способ на будущее. Мне вполне должно хватить первого способа.
  • Как сделать резервный сервер VPS?

    @Rokis Автор вопроса
    Можете сразу в DNS задать 2 разных IP. Современные браузеры будут использовать тот адрес, что отвечает. Разумеется, это не будет работать, если связь прервется во время сеанса пользователя.


    Если так, то не вижу вообще никаких проблем (кроме времени обновления DNS). Тогда получается можно хоть виртуальный хостинг использовать как резерв, хоть домашний сервер. Спасибо за разъяснения.

    С личными IP тоже вроде простой способ. Надо только с BGP разобраться и с синхронизацией данных между двумя машинами. В моём случае можно наверное и вручную всё сделать.

    Единственно я не понял зачем
    некоторое время 2 сервера обслуживают один и тот же сайт параллельно.
    пока не протухнет DNS
    Чем это проще и для чего? Как это к теме относится? Я представил обычный переезд на другой сервер.
  • Как сделать резервный сервер VPS?

    @Rokis Автор вопроса
    Правильно ли я понимаю? Я отдаю в afraid свои доменные имена, создаю копию первого VPS сервера где лежат мои сайты. При отключении первого VPS сервера afraid будет перенаправлять на IP второго сервера. Второй сервер будет работать всегда, как и первый, но принимать трафик он будет только когда первый будет недоступен. Поправьте если, что не так.
  • Как сделать резервный сервер VPS?

    @Rokis Автор вопроса
    Решение конечно не из простых, но всё равно спасибо. Буду рассматривать его в перспективе на будущее.
  • Как сделать резервный сервер VPS?

    @Rokis Автор вопроса
    Так DNS же будут обновляться у пользователей какое-то время и в это время сайты будут недоступны, я правильно понимаю?
  • Как правильно подключить fastcgi к phpmyadmin в nginx?

    @Rokis Автор вопроса
    Я имею ввиду после авторизации на странице my.ip.server/phpmyadmin/ Думаю вы неправильно меня поняли.
  • Как правильно подключить fastcgi к phpmyadmin в nginx?

    @Rokis Автор вопроса
    Если полный путь указать, то отдаёт 404. С алиасом та же ситуация. В логах указывается, что такой страницы просто нет. Обычная ошибка 404.

    Вся проблема в том, что в URL не добавляется phpmyadmin как я понял. То есть у меня так My.server.ip/index.php?token=ff34sdg423sdgdsgs0cd3c16bf94ef2432b8045 , а должно быть так My.server.ip/phpmyadmin/index.php?token=ff34sdg423sdgdsgs0cd3c16bf94ef2432b8045

    В остальном всё работает вроде.
  • Как исправить ошибку с модулем mod_fastcgi?

    @Rokis Автор вопроса
    Мне непонятно почему этот процесс отдаёт ошибку 500?