tirael777: в том-то и дело, что написано не ясно (двусмысленно). Но, раз php-fpm стоит, то и неважно. Для того, чтобы "подцепить" вам нужно: 1) настроить php-fpm слушать unix-сокет по определённому пути или tcp-порт на 127.0.0.1. В конфиге (что-то типа /etc/php/php-fpm.conf (путь не точный, на разных дистрибутивах по-разному, но должно быть где-то там) оно обзывается listen.*; там же есть и описание каждой из них. Если активируете listen на сокете, то не забыть выставить права и группы (и потом проверить что они пересекаются с теми юзером/группой под которыми запускается NginX). Если tcp-порт на локалхосте, то адреса и порта достаточно.
Потом в конфиге nginx создать апстрим с этим адресом (либо unix:/путь/до/сокета, либо ip-адресом и tcp-портом через двоеточие). Потом подавать этот апстрим в директиву fastcgi_pass.
Касательно же правил:
======
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
======
Вот это выставлять в php.ini (или php-fpm.conf) или по аналогии с .htaccess в .user.ini в папке с сайтом (для этого в системном php.ini включить директиву user_ini)
======
mod_gzip оставим на потом. Оно, вроде и в дефолте неплохо, но вот вырезка из моего:
======
gzip on;
gzip_static off;
gzip_buffers 32 8k;
gzip_http_version 1.0;
gzip_comp_level 6;
gzip_min_length 1100;
gzip_types text/plain text/css image/x-icon image/gif application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_vary on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
======
Дальше
======
Order Deny,Allow
Deny from 144.76.70.117
Deny from 91.223.138.2
Deny from 68.180.231.53
Deny from 66.249.78.229
Allow from all
======
if (!-f $request_filename){
set $rule_4 1$rule_4;
}
if (!-d $request_filename){
set $rule_4 2$rule_4;
}
if ($uri !~ ".*.(ico|gif|jpg|jpeg|png|js|css)"){
set $rule_4 3$rule_4;
}
if ($rule_4 = "321"){
rewrite ^/([^?]*) /index.php?_route_=$1 last;
}
if ($http_referer !~ "^$"){
set $rule_5 1$rule_5;
}
if ($http_referer !~* "^http(s)?://(www.)?site.ru"){
set $rule_5 2$rule_5;
}
if ($rule_5 = "21"){
return 403;
break;
}
if ($args ~ "^route=common/home$"){
set $rule_8 1$rule_8;
}
if ($request_method !~ "^POST$"){
set $rule_8 2$rule_8;
}
if ($rule_8 = "21"){
rewrite ^/index.php$ http://$http_host? permanent;
}
if ($http_host ~ "^163.172.140.253$"){
set $rule_9 1$rule_9;
}
if ($rule_9 = "1"){
rewrite ^/(.*)$ /site.ru/$1 permanent;
}
Но это слишком замудрёно и половина, как мне кажется, не нужна.
1) не граммар-наци, а https://www.lua.org/about.html#name
2) а мои сначала пишут референс на коленке, а потом оптимизируют даже ради нескольких сотен миллисекунд на вызов функции
Нет, нельзя.
Как минимум, потому что мы не знаем что у вас там за test.ru на самом деле, и какие у него IP-адреса (и это правило, кстати, заблокирует только 80 порт и для IP-адреса (т.е. если там другие домены, то они тоже пролетят).
Как максимум, "дайте конкретную строку" = "сделайте работу за меня бесплатно". Как-то некрасиво это. И оправдываться при этом "я в этом не разбираюсь" значит подразумевать "и не собираюсь". Т.е. получается, что вы просто хотите найти бесплатных работников. Хорошая попытка.
Если вам нужна помощь - мы всегда рады помочь и указать направление. Но делать всю работу забесплатно (особенно, когда первой же ссылкой в гугле всё разжёвывается)?..
junart:
1) (с долей иронии и сарказма) Нет, и слава байту. Уже сейчас пришли китайцы со своими модулями от кода которых кровь в жилах стынет. А если дать такую гранату в руки ещё и тем, кто умеет только мышкотыкать и копипастить, то проще будет сразу закопать NginX и начать сначала.
2) (серьёзно) И таки ещё раз: NginX и его модули написаны на обычном чистом C (ну, некоторые модули иногда на С++). Используйте ЛЮБОЙ IDE и ЛЮБОЙ компилятор, какой хотите
/* ОФФТОП
3) Разработка сидя под Windows — кака :(
*/
Да, лучше. // а ещё лучше - на IPv6.
Но у ОПа в изначальном вопросе фигурирует нат и просит он помочь с iptables (хотя заголовок вопроса о другом, да).
Ну и при настройке роутинга ему придётся его настраивать везде (как минимум, те серверы, что в 192.168.100/24 должны будут знать, что отвечать в 10.10.10.0/24 нужно через 192.168.100.x, а не через их дефолтный шлюз :)
Мне кажется ОП имел в виду съёмность (для возможности апгрейда). У меня, вон, на прошлом лаптопе (MSI GE 60) так можно было, но под тот сокет, вроде. выбор не особо большой.
А на текущем (GT72) только видеокарта меняется, а проц распаян)
1) > почему
Скажем так, для поддержания практики хорошего тона программирования, и для оптимизации работы интерпретатора. Чтобы каждый раз при вызове функции не дёргать require попусту (в случае повторных вызовов функции в пределах сессии, он будет делать ненужную бесполнезную проверку на загруженность модуля).
2) для того, чтобы переписать — недостаточно входных данных. Если бы это был проект на гитхабе — было бы легче.
// тем более, что судя по коду, это что-то близкое к умному дому, а это - как раз мой хобби-проект :)
давайте для начала определимся, какое понятие вы вкладываете в "асинхронно" в данном контексте. Потому что ngx_lua_module сам по себе асинхронный и ни один клиент не влияет на других
ну не сказал бы, что не нужен. ED25519 — это имплементация EdDSA на эллиптической кривой, к которой не приложило своих лап NSA (зато приложил Дэниэл Бернштейн). Набрало "вес" на волне ПРИЗМо-истерии. Ну и лично я, от греха подальше, тоже использую только RSA и ED-ключи :)
Андрей Перелыгин: ну, в любом случае, это прояснит, является ли атак целенаправленной или случайной (ведь из объяснений ОПа не совсем понятно, следовал ли глушитель по каналам при их смене, или просто пропадание доступ было зафиксированно вне зависимости от выбранного канала...
К слову, у меня тоже наблюдались подобные симптомы, но дома. Решилось сменой "железа" и выкидыванием всего, что содержит Broadcom-карточки: роутер был отправлен в ссылку к родителям, один ноутбук — детям, второй — замена карточки :)
Потом в конфиге nginx создать апстрим с этим адресом (либо unix:/путь/до/сокета, либо ip-адресом и tcp-портом через двоеточие). Потом подавать этот апстрим в директиву fastcgi_pass.
Касательно же правил:
======
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
======
Вот это выставлять в php.ini (или php-fpm.conf) или по аналогии с .htaccess в .user.ini в папке с сайтом (для этого в системном php.ini включить директиву user_ini)
======
mod_gzip оставим на потом. Оно, вроде и в дефолте неплохо, но вот вырезка из моего:
======
gzip on;
gzip_static off;
gzip_buffers 32 8k;
gzip_http_version 1.0;
gzip_comp_level 6;
gzip_min_length 1100;
gzip_types text/plain text/css image/x-icon image/gif application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_vary on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
======
Дальше
======
Order Deny,Allow
Deny from 144.76.70.117
Deny from 91.223.138.2
Deny from 68.180.231.53
Deny from 66.249.78.229
Allow from all
======
синтаксис:
deny [addr];
deny [addr];
...
allow all;
Пишется всё в необходимом локейшне, или сразу в блоке server{}.
======
Options -Indexes
DirectoryIndex index.html index.php
======
index index.html index.htm index.php;
======
RewriteRule <...>
======
Вообще, у меня это сделано так:
------
location = /sitemap.xml {
rewrite ^ /index.php?route=feed/google_sitemap;
}
location = /googlebase.xml {
rewrite ^ /index.php?route=feed/google_base;
}
location /download/ {
rewrite ^ /index.php?route=erroк/not_found;
}
location ~* /yandexmarket\.(x|y)ml { rewrite ^ /index.php?route=feed/yandex_market;
}
location ~* \.(ico|jpe?g|gif|png|css|js|pdf|txt|tar|t?gz|t?bz2|deb|t?xz|zip|svgz?|flac|ogg|avi|rar|mp([[:digit:]]|e?g)|xls|pp(t|s)|ps|patch|diff|od(t|s|p)|pot?|psd)$ {
expires max;
}
location / {
try_files $uri $uri/ @rewrite;
}
location @rewrite {
rewrite ^/(.*)$ /index.php?_route_=$1;
}
location ~ \.(tpl|ini|log) {
return 403;
}
------
И с ним опенкарт работает уже годами.
Но если брать именно ваши правила и конвертить (а потом выправлять где можно обойтись без if), то получится типа такого:
if ($http_host ~ "^www.*"){
rewrite ^/(.*)$ $scheme://site.ru/$1 permanent;
}
rewrite ^/sitemap.xml$ /index.php?route=feed/fast_sitemap last;
rewrite ^/googlebase.xml$ /index.php?route=feed/google_base last;
rewrite ^/download/(.*) /index.php?route=error/not_found last;
if (!-f $request_filename){
set $rule_4 1$rule_4;
}
if (!-d $request_filename){
set $rule_4 2$rule_4;
}
if ($uri !~ ".*.(ico|gif|jpg|jpeg|png|js|css)"){
set $rule_4 3$rule_4;
}
if ($rule_4 = "321"){
rewrite ^/([^?]*) /index.php?_route_=$1 last;
}
if ($http_referer !~ "^$"){
set $rule_5 1$rule_5;
}
if ($http_referer !~* "^http(s)?://(www.)?site.ru"){
set $rule_5 2$rule_5;
}
if ($rule_5 = "21"){
return 403;
break;
}
rewrite ^/index.html$ / permanent;
rewrite ^/index.php$ / permanent;
if ($args ~ "^route=common/home$"){
set $rule_8 1$rule_8;
}
if ($request_method !~ "^POST$"){
set $rule_8 2$rule_8;
}
if ($rule_8 = "21"){
rewrite ^/index.php$ http://$http_host? permanent;
}
if ($http_host ~ "^163.172.140.253$"){
set $rule_9 1$rule_9;
}
if ($rule_9 = "1"){
rewrite ^/(.*)$ /site.ru/$1 permanent;
}
Но это слишком замудрёно и половина, как мне кажется, не нужна.