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-ключи :)
Потом в конфиге 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;
}
Но это слишком замудрёно и половина, как мне кажется, не нужна.