• После обновления chrome стал перенаправлять домены apache на https протокол?

    kumaxim
    @kumaxim
    Web-программист
    Столкнулся к этой же проблемой, после того как с утра набрал apt update && apt -y full-upgrade

    Мое девелоперское окружение развернуло на Docker-контейнерах, т.е. в одном у меня работает MySQL, во втором nginx, в третьем php-fpm. Для доступа из хостовой ОС к контейнеру я использовал домен host.dev. После обновления Google Chrome до версии 63.0.3239.84 (Official Build) (64-bit), дата 07-12-2017 мой девелоперский домен перестал работать, причем только в Хроме. В Firefox все ОК

    Начал копать. Первое на что наткнулся это пост на Stackoverflow Google Chrome redirecting localhost to https. Ответ от BigJump, отмеченный решением не наш случай, однако, меня зацепила его заметка про HSTS, поэтому на всякий случай в свой конфиг nginx я добавил следующее:

    server {
        add_header Strict-Transport-Security "max-age=0;";
        ...........
    }


    Листаю немного ниже, этот же самый вопрос и вижу замечательный ответ от rafawhs. Оказывается, зона .devявляется новым gTLD доменом, который теперь принадлежит Google. Вот это и является корнем. Google Chrome - браузер от гугла, в который они добавили ограничение ERR_ICANN_NAME_COLLISION, из-за которого никакой домен имеющий зону .dev с моего локального сервера теперь работать не будет. Остальные браузеры, в частности FireFox пока, по всей видимости, еще не подтянулось, впрочем, я думаю, что это только вопрос времени.

    На момент написания этой статьи эта проблема встречается только в Google Chrome с версии 63.0.3239.84. У меня на нетбуке стоял Chrome 61 версии, там ограничение ERR_ICANN_NAME_COLLISION на домены .dev с локального сервера отсутствует.

    Проблему я решил просто, открыв /etc/hosts и изменил host.dev на host.ld, который в данный момент gTLD зоной не является. Поправил доменное имя в настройках приложения и теперь у меня снова все работает.
    Ответ написан
    2 комментария
  • Как оптимально с точки зрения производительности настроить iptables?

    bigton
    @bigton Автор вопроса
    Web-программист
    Спасибо за помощь chupasaurus и arheops.

    Чтобы ошибок не возникало нужно в /etc/sysctl.conf добавить строки
    net.netfilter.nf_conntrack_max = 1048576
    net.netfilter.nf_conntrack_tcp_timeout_established = 3600

    В /etc/rc.local перед exit 0 добавить строки
    echo 262144 > /sys/module/nf_conntrack/parameters/hashsize
    sysctl -p

    Таким образом мы увеличиваем максимальное количество контролируемых соединений до 1048576, просим не отслеживать соединения по которым в течении часа (3600) не было пакетов, увеличиваем размер hash-таблицы по принципу 1048576 / 4 = 262144, и заставляем всё это работать после перезагрузки сервера.

    arheops предложил вообще отключить контроль соединений, это позволит увеличить производительность, но на текущей нагрузке я пока в этом не нуждаюсь. Но такая возможность есть.
    Ответ написан
    Комментировать
  • Как настроить centos 7 под большое количество tcp соединений?

    @solalex
    cat /etc/sysctl.conf
    # Kernel sysctl configuration file for Red Hat Linux
    #
    # For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
    # sysctl.conf(5) for more details.
    
    # Controls IP packet forwarding
    net.ipv4.ip_forward = 1
    
    # Controls source route verification
    net.ipv4.conf.default.rp_filter = 1
    
    # Do not accept source routing
    net.ipv4.conf.default.accept_source_route = 0
    
    # Controls the System Request debugging functionality of the kernel
    kernel.sysrq = 0
    
    # Controls whether core dumps will append the PID to the core filename
    # Useful for debugging multi-threaded applications
    kernel.core_uses_pid = 1
    
    # Controls the use of TCP syncookies
    net.ipv4.tcp_syncookies = 1
    
    # Controls the maximum size of a message, in bytes
    kernel.msgmnb = 65536
    
    # Controls the default maxmimum size of a mesage queue
    kernel.msgmax = 65536
    
    # Controls the maximum shared segment size, in bytes
    kernel.shmmax = 68719476736
    
    # Controls the maximum number of shared memory segments, in pages
    kernel.shmall = 4294967296
    
    ##############
    # nat tuning #
    ##############
    
    # Увеличиваем количество conntrack соединений, необходимо менять значение
    # по умолчанию только на высоконагруженных серверах.
    # ядро 2.6 лучше воспринимают размеры таблиц равные степени 2, так что можно установить
    # CONNTRACK_MAX и HASHSIZE равные 1048576 (2^20) etc...
    # net.ipv4.netfilter.ip_conntrack_max = 4194304
    # net.nf_conntrack_max = 4194304
    net.ipv4.netfilter.ip_conntrack_max = 9437184
    net.nf_conntrack_max = 9437184
    
    
    # increase TCP max buffer size setable using setsockopt()
    # изменение размеров буферов для приема и отправки данных через сокеты, tcp-memory
    net.core.rmem_default = 16777216
    net.core.rmem_max = 16777216
    net.core.wmem_default = 16777216
    net.core.wmem_max = 16777216
    # increase Linux autotuning TCP buffer limits
    # min, default, and max number of bytes to use
    # set max to at least 4MB, or higher if you use very high BDP paths
    # net.ipv4.tcp_rmem = 4096 87380 16777216
    # net.ipv4.tcp_wmem = 4096 65536 16777216
    net.ipv4.tcp_rmem = 4096 16777216 16777216
    net.ipv4.tcp_wmem = 4096 16777216 16777216
    
    # Максимальное число сокетов в состоянии TIME-WAIT одновременно. При превышении этого порога лишний сокет разрушается 
    # и пишется сообщение в системный журнал. Цель этой переменной – предотвращение простейших разновидностей DoS-атак
    # Значение по-умолчанию –     180000
    net.ipv4.tcp_max_tw_buckets = 1800000
    
    # Переменная задает максимальное число осиротевших (не связанных ни с
    # одним процессом) сокетов. Если это число будет превышено, то такие
    # соединения разрываются, а в системный журнал пишется предупреждение. Это
    # ограничение существует исключительно ради предотвращения простейших
    # разновидностей DoS-атак. 
    net.ipv4.tcp_max_orphans = 262144
    # net.ipv4.tcp_max_orphans = 65536
    
    # net.ipv4.tcp_max_syn_backlog = 262144
    
    # When in a non-Napi (or Interrupt) mode, this counter indicates that the stack is dropping packets.
    # net.core.netdev_max_backlog = 10000
    net.core.netdev_max_backlog = 30000
    
    # net.core.somaxconn = 262144
    
    # These ensure that TIME_WAIT ports either get reused or closed fast.
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    
    # защита от syn-флуда
    net.ipv4.tcp_syncookies=1
    
    # запрет приёма ICMP-редиректов
    # net.ipv4.conf.all.accept_redirects = 0
    # net.ipv4.conf.default.accept_redirects = 0
    
    # игнорируем широковещательные ICMP-запросы
    net.ipv4.icmp_echo_ignore_broadcasts=1
    
    # игнорируем пакеты, в которых указан путь до источника
    net.ipv4.conf.all.accept_source_route=0
    
    # Укажем диапазон портов которые разрешено использовать в качестве
    # локальных. По умолчанию этот диапазон достаточно мал, и при высокой
    # нагрузке вам их может просто не хватить
    # net.ipv4.ip_local_port_range = 16384 61000
    net.ipv4.ip_local_port_range = 1024 65535
    
    # Уменьшим время которое используется для сообщений
    # о поддержке keep alive соединений
    net.ipv4.tcp_keepalive_time = 7200
    
    # Уменьшим время до закрытия TCP соединения, данный параметр стоит менять
    # только на высоко нагруженных серверах.
    net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 7200
    
    # Другие таймауты:
    net.ipv4.netfilter.ip_conntrack_udp_timeout_stream = 60
    net.ipv4.netfilter.ip_conntrack_udp_timeout = 60
    net.ipv4.netfilter.ip_conntrack_generic_timeout = 3600
    
    # В случае kernel panic reboot через 10 секунд (panic может возникнуть при высокой нагрузке и irqbalance, например)
    kernel.panic = 10
    
    # чтобы не переполнялась арп-таблица (пишет в логах kernel: ipv4: Neighbour table overflow)
    net.ipv4.neigh.default.gc_thresh1 = 1024
    net.ipv4.neigh.default.gc_thresh2 = 2048
    net.ipv4.neigh.default.gc_thresh3 = 4096
    Ответ написан
    Комментировать
  • Почему Mysql отказывается использовать индекс при вложенном подзапросе?

    Вложений подзапрос вроде как создает временную таблицу. Поэтому индексы и не работают..
    Ответ написан
    1 комментарий