Как закрыть доступ по IP в NGINX + PHP-Fpm?

Всем привет. Есть сайт, который работает на связке Nginx + php-fpm на панели управления Ajenti на Wordpress

Вот нужно заблокировать доступ по IP всем, кроме моего IP адреса.
Я добавлял например такое
location ~ / { #allow мой ИП; deny all; }

Но тогда сайт пхп не загружается, а скачивает Индексный файл пхп.

Подскажите как настроить правильно такое…

Вот конфиг
/etc/nginx/conf.d/мой-сайт.conf
# This order might seem weird — this is attempted to match last if rules below fail. location / { try_files $uri $uri/ /index.php?$args; } # Add trailing slash to */wp-admin requests. rewrite /wp-admin$ $scheme://$host$uri/ permanent; # Directives to send expires headers and turn off 404 error logging. 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)$ { access_log off; log_not_found off; expires max; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac). # Keep logging the requests to parse later (or to pass to firewall utilities such as fail2ban) location ~ /\. { deny all; } # Deny access to any files with a .php extension in the uploads directory # Works in sub-directory installs and also in multisite network # Keep logging the requests to parse later (or to pass to firewall utilities such as fail2ban) location ~* /(?:uploads|files)/.*\.php$ { deny all; } #

Как победить cannot allocate memory for the buffer pool в MYSQL?

Не могу победить mysql…
Раз в сутки или чаще мускул ложится.
Памяти много, 32 гб, нагрузки мизер на сервере.

160109 00:26:19 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended 160109 00:26:19 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 160109 0:26:19 [Note] /usr/libexec/mysqld (mysqld 5.5.47) starting as process 19542… 160109 0:26:19 [Note] Plugin 'FEDERATED' is disabled. 160109 0:26:19 InnoDB: Mutexes and rw_locks use GCC atomic builtins 160109 0:26:19 InnoDB: Compressed tables use zlib 1.2.3 160109 0:26:19 InnoDB: Using Linux native AIO 160109 0:26:19 InnoDB: Initializing buffer pool, size = 10.0G 160109 0:26:20 InnoDB: Completed initialization of buffer pool 160109 0:26:20 InnoDB: highest supported file format is Barracuda. 160109 0:26:20 InnoDB: Waiting for the background threads to start 160109 0:26:21 InnoDB: 5.5.47 started; log sequence number 792513317 160109 0:26:21 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306 160109 0:26:21 [Note] — '0.0.0.0' resolves to '0.0.0.0'; 160109 0:26:21 [Note] Server socket created on IP: '0.0.0.0'. 160109 0:26:21 [Warning] 'proxies_priv' entry '@ root@you32' ignored in --skip-name-resolve mode. 160109 0:26:21 [Note] Event Scheduler: Loaded 0 events 160109 0:26:21 [Note] /usr/libexec/mysqld: ready for connections. Version: '5.5.47' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server (GPL) by Remi 160109 22:37:19 mysqld_safe Number of processes running now: 0 160109 22:37:19 mysqld_safe mysqld restarted 160109 22:37:19 [Note] /usr/libexec/mysqld (mysqld 5.5.47) starting as process 14038… 160109 22:37:19
Читать дальше

Что это за ошибка innodb?

Раз в сутки или чаще мускул ложится.
Памяти много, 32 гб, нагрузки мизер на сервере.

160105 18:12:19 mysqld_safe Number of processes running now: 0 160105 18:12:19 mysqld_safe mysqld restarted 160105 18:12:19 [Note] /usr/libexec/mysqld (mysqld 5.5.47) starting as process 7375… 160105 18:12:19 [Note] Plugin 'FEDERATED' is disabled. 160105 18:12:19 InnoDB: Mutexes and rw_locks use GCC atomic builtins 160105 18:12:19 InnoDB: Compressed tables use zlib 1.2.3 160105 18:12:19 InnoDB: Using Linux native AIO 160105 18:12:19 InnoDB: Initializing buffer pool, size = 24.0G InnoDB: mmap(26373783552 bytes) failed; errno 12 160105 18:12:19 InnoDB: Completed initialization of buffer pool 160105 18:12:19 InnoDB: Fatal error: cannot allocate memory for the buffer pool 160105 18:12:19 [ERROR] Plugin 'InnoDB' init function returned error. 160105 18:12:19 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 160105 18:12:19 [ERROR] Unknown/unsupported storage engine: innodb 160105 18:12:19 [ERROR] Aborting 160105 18:12:19 [Note] /usr/libexec/mysqld: Shutdown complete 160105 18:12:20 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

my.cnf
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql symbolic-links=0 max_connections=200 max_user_connections=30 key_buffer_size=8G myisam_sort_buffer_size = 3G open_files_limit = 100000 wait_timeout=30 interactive_timeout=50 long_query_time=5 skip-name-resolve #log-queries-not-using-indexes #log-slow-queries=/var/log/mysql/log-slow-queries.log #innodb_use_native_aio = 0 innodb_file_per_table #was added by me, down mysql innodb=ON default-storage-engine=innodb innodb_use_sys_malloc=0 innodb_buffer_pool_size=24G [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid

Как настроить htaccess для работы с несколькими сайтами?

Есть хостинг, где для основного домена невозможно изменить физический адрес на сервере (/home/troykaby/public_html). И есть несколько проектов на laravel, которые необходимо разместить на данном хостинге. Мне удалось настроить только один проект, путем добавления в .htaccess, который находиться в корне public_html, следющего:

Options +FollowSymLinks RewriteEngine On RewriteBase / # сайт troyka.by RewriteCond %{HTTP_HOST} ^troyka.by$ [NC] RewriteCond %{REQUEST_URI} !^troykaby/public RewriteRule ^(.*)$ troykaby/public/$1 [L] # сайт www.troyka.by RewriteCond %{HTTP_HOST} ^www.troyka.by$ [NC] RewriteCond %{REQUEST_URI} !^troykaby/public RewriteRule ^(.*)$ troykaby/public/$1 [L]

При добавлении аналогичного блока для другого домена в тот же .htaccess, ничего не дает. А точнее ругается на прикручиваемый домен, мол, доступ запрещен.

P.S. Поддержка хостера сказала, что адрес на сервере для основного домена изменить нельзя, хотя это решило бы много проблем.

Возможно ли восстановить винчестер в моем случае?

В середине декабря появилась на ноутбуке ошибка, для решения которой нужно перезагрузить ноутбук. За ноутбуком был не я, поэтому мне ну могут обьяснить что за ошибка была После включения ноутбука появилась ошибка, что нет загрузочного устройства(на ноуте была windows 10, 2 раздела ntfs, один ext2 или ext3 и один swap). Если загружаться с флешки или livecd, секунд 30 черный экран(наверное ноут пытается прочитать какуе-ту информацию с диска. Акронисон и другими прогами не форматируется.
Гуглил, но так восстановить работоспособность не получилось. Мне нужно попробовать восстановить хотя-бы сам винчестер(если это возможно) без инфи на нем. Нашел в интернете fsck, и вот что она выводит:
root@porteus:/home/guest# fsck -n /dev/sda fsck из util-linux 2.21.2 e2fsck 1.42.12 (29-Aug-2014) ext2fs_open2: Bad magic number in super-block /sbin/e2fsck: Superblock invalid, trying backup blocks… /sbin/e2fsck: Bad magic number in super-block while trying to open /dev/sda The superblock could not be read or does not describe a valid ext2/ext3/ext4 filesystem. If the device is valid and it really contains an ext2/ext3/ext4 filesystem (and not swap or ufs or something else), then the superblock is corrupt, and you might try running e2fsck with an alternate superblock: e2fsck -b 8193 or e2fsck -b 32768
Готов внимательно выслушать любые предложения. Спасибо за внимание, вся надежда только на вас.
PS: Ноутбуку 3 года, не падал, раньше проблем вообще не было замечено.

[Решено] Как создать комбинированную ссылку на функцию?

Дано:

#опеределенная функция вызывает потоки и передает им ссылки sub prs {… thr (@links); } #Тут то и вопрос как создать ссылку на функцию thr_prs, зная что нас вызывает функция prs? sub thr { #Вот я вызвал имя калера my $d = (caller(1))[3]; $d =~ s/Some_lib:://g; #как можно сделать составную ссылку на функцию типа # my $fu = '\&thr'."$d"; Thread->new( \&rty, ($n, \&thr_prs)); } sub rty { my ($url, $hash) = shift; my $ba = Mojo::UserAgent->new(); my $res = $ua->max_redirects(5)->get($url); $hash->( $res ); } sub thr_prs{ my @hash = @_; foreach (@hash){ my $dom = Mojo::DOM->new( decode('utf8', $_->res->body ) ); }; }
Вот собственно и вопрос, как можно создавать комбинированную ссылку исходя из имени вызывающей функции, еще раз если вызввает data передавать ссылку на \&thr_data, если katya то на \&thr_katya и т.д.

Postfix долго принимает почту.?

Всем Привет! С наступающими праздниками!
Под самый занавес 2015-го, возникла проблема, и решил, что в новый год надо входить без хвостов и других неприятностей.

В общем есть Postfix + Dovecot (CentOS / 6), у юзеров клиент буревестник от Мозилы.
Письма приходят очень долго, а отправляются в штатном режиме.
Вот конфа.
postconf -n
alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases broken_sasl_auth_clients = no command_directory = /usr/sbin config_directory = /etc/postfix daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix debug_peer_level = 2 html_directory = no inet_interfaces = all inet_protocols = ipv4 local_recipient_maps = unix:passwd.byname $alias_maps mail_owner = postfix mailbox_command = /usr/bin/maildrop mailbox_size_limit = 0 mailq_path = /usr/bin/mailq.postfix manpage_directory = /usr/share/man message_size_limit = 51200000 mydestination = $myhostname, localhost.$mydomain, localhost mydomain = localdomain myhostname = мойсайт.ru myorigin = мойсайт.ru newaliases_path = /usr/bin/newaliases.postfix non_smtpd_milters = inet:127.0.0.1:8891 queue_directory = /var/spool/postfix readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES sample_directory = /usr/share/doc/postfix-2.6.6/samples sendmail_path = /usr/sbin/sendmail.postfix setgid_group = postdrop smtp_generic_maps = hash:/etc/mail/generic smtp_tls_CAfile = /etc/postfix/cacert.pem smtp_tls_note_starttls_offer = yes smtp_use_tls = yes smtpd_client_restrictions = permit_sasl_authenticated, check_client_access hash:/etc/mail/access smtpd_milters = inet:127.0.0.1:8891 smtpd_recipient_restrictions = permit_sasl_authenticated, check_sender_access hash:/etc/mail/access, check_client_access hash:/etc/mail/access, check_recipient_access hash:/etc/mail/access, permit_mynetworks, reject_unauth_destination, reject_unlisted_recipient, reject_unverified_recipient, check_policy_service inet:127.0.0.1:60000 smtpd_sasl_auth_enable = no smtpd_sender_restrictions = permit_sasl_authenticated, check_sender_access hash:/etc/mail/access smtpd_tls_CAfile = /etc/postfix/cacert.pem smtpd_tls_auth_only = no smtpd_tls_cert_file = /etc/postfix/мойсайт.ru.crt smtpd_tls_key_file = /etc/postfix/мойсайт.ru.key smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_use_tls = yes tls_random_source = dev:/dev/urandom unknown_local_recipient_reject_code = 550 virtual_alias_domains = /etc/mail/local-host-names virtual_alias_maps = hash:/etc/mail/virtusertable

Какой конфиг терминального сервака?

Клюнул тут одного персонажа кто-то и… как всегда… СРОЧНО.
Задача в целом — перевести офис на терминалы. Варианта 2 (чуть ниже).
Офис самый обычный, 50+ человек, винда, аутлук, офис, 1С, сетевая печать.
Есть перцы, работающие с банк-клиентами, есть с ЭЦП всякими, несколько хитрых софтин для рассчёта чего-то там специализированного. Как везде, короче.
Менять компы на терминалки не собираемся, только если закупать дополнительные.

Собственно помогите, пожалуйста, с конфигом.

На 50+ юзеров с учётом обычного софта и парочкой тяжести я вижу как-то так:
Проц Е5-2670 (там 12 ядер) * 4 шт (всего 48 ядер) — не крутовато ли?
RAM по формуле 3Гб на юзера получается 150-180 Гб — нужно же и на систему и на запас
Харды SSD по 1Тб * 4шт — нужно же шустро
Ещё харды обычные SATA, 4 шт. нешустрые данные хранить

Если идти по запасному варианту — то есть пересаживать только серую массу, которые не используют тяжести, клиентбанки и некоторых начальников (они-то своё домашнее видео, наверное, не захотят через общий сервак гонять?), то получается грубо:

Юзеров около 25:
Проц Е5-2670 (там 12 ядер) * 2 шт — не круто? по идее проц дорогой, но материнка нужна уже
Читать дальше

Как пробросить трафик с одного сервера на другой?

Доброго дня.
Столкнулся со следующей проблемой — необходимо пробросить трафик с 80 порта одного сервера (дале 1.1.1.1) на другой (далее 2.2.2.2). Оба сервера хостятся на амазоне, ОС — восьмой дебиан на первом и бубунта 14.04 на втором.

Делал так, через iptables:

# sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf # включил ip forwarding # sysctl -p // проверил, включилось # iptables -F // удалил текущие правила # iptables -t nat -F // и специально для nat // Далее сами правила # iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 2.2.2.2:80 # iptables -t nat -A POSTROUTING -p tcp -d 2.2.2.2 --dport 80 -j SNAT --to-source 1.1.1.1 # sudo iptables -t nat -L -n // проверка // вывод: Chain PREROUTING (policy ACCEPT) target prot opt source destination DNAT tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 to: 2.2.2.2:80 Chain INPUT (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination SNAT tcp — 0.0.0.0/0 2.2.2.2 tcp dpt:80 to: 1.1.1.1 // и напоследок сохранил и проверил: # iptables-save | sudo tee /etc/iptables.up.rules

Tcpdump на первой машине показывает, что пакет отправляется на второй хост, но на втором хосте он либо не обрабатывается, либо его режет амазоновский нат. Гугление и общение с админами не помогло, все запутались ещё больше. Максимум чего удалось добиться это отправка пакетов на второй хост при обращении на первый, но там они не обрабатываются, в tcpdump нет вывода никакого.
Если кто то захочет предложить Port mirroring или mangle в iptables — в принципе рассматривается.

Заранее спасибо.

Как заставить работать GeoIP?

Geoip стоит. Базы залиты /usr/share/GeoIP

phpinfo показывает
/etc/php.d/geoip.ini
geoip extension version 1.0.8
geoip library version 1004005
geoip.custom_directory no value no value

В php.ini прописана строка extension=geoip.so

Nginx собран вместе с geo модулем, nginx -V это подтверждает.
В nginx.conf прописано
# GeoIP geoip_country /usr/share/GeoIP/GeoIP.dat; # the country IP database geoip_city /usr/share/GeoIP/GeoLiteCity.dat; # the city IP database ### SET FASTCGI Variables ### fastcgi_param GEOIP_CITY_COUNTRY_CODE $geoip_city_country_code; fastcgi_param GEOIP_CITY_COUNTRY_CODE3 $geoip_city_country_code3; fastcgi_param GEOIP_CITY_COUNTRY_NAME $geoip_city_country_name; fastcgi_param GEOIP_REGION $geoip_region; fastcgi_param GEOIP_CITY $geoip_city; fastcgi_param GEOIP_POSTAL_CODE $geoip_postal_code; fastcgi_param GEOIP_CITY_CONTINENT_CODE $geoip_city_continent_code; fastcgi_param GEOIP_LATITUDE $geoip_latitude; fastcgi_param GEOIP_LONGITUDE $geoip_longitude;

В fastcgi_params тоже
# For GeoIP fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code; fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name; fastcgi_param GEOIP_REGION $geoip_region; fastcgi_param GEOIP_CITY $geoip_city; fastcgi_param GEOIP_POSTAL_CODE $geoip_postal_code; fastcgi_param GEOIP_CITY_CONTINENT_CODE $geoip_city_continent_code; fastcgi_param GEOIP_LATITUDE $geoip_latitude; fastcgi_param GEOIP_LONGITUDE $geoip_longitude;

php -m | grep geoip PHP Warning: Module 'geoip' already loaded in Unknown on line 0 geoip

А в тестовом файле не определяет даже страну.