Re: Несколько CMS для разных URL
Я не совсем понимаю как работает try_files, если не затруднит, могли бы привести пример на моем случае? Posted at Nginx Forum: https://forum.nginx.org/read.php?21,272923,272970#msg-272970 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Несколько CMS для разных URL
если для вас это является понятным, и работает так, как вы ожидаете, почему бы и нет. я бы на try_files сделал. и от "expires max" обычно больше вреда, чем пользы (если содержимое файла поменяется, а имя останется прежним). 2017-03-15 19:50 GMT+05:00 valmon: > В общем, нарисовался вот такой конфиг, есть замечание, даже со статичным > index.html все получается, есть замечание? > > > location / { > root /home/admin/web/site.com/public_html; > location ~ ^/[A-Z][A-Za-z]*. { > rewrite ^/(.*)$ /index2.php?q=$1 last; > } > if (!-e $request_filename) { > rewrite ^/(.*)$ /index.php?q=$1 last; > } > location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ { > expires max; > } > location ~ [^/]\.php(/|$) { > fastcgi_param SCRIPT_FILENAME > $document_root$fastcgi_script_name; > if (!-f $document_root$fastcgi_script_name) { > return 404; > } > fastcgi_pass127.0.0.1:9000; > fastcgi_index index.php; > include /etc/nginx/fastcgi_params; > } > location ~* ^.+\.(xml|ini|bin|sql|log)$ { > denyall; > return 403; > } > location ~* ^/(hosts|core|patches|db|others|tmp)/ { > denyall; > return 403; > } > } > > Posted at Nginx Forum: https://forum.nginx.org/read. > php?21,272923,272965#msg-272965 > > ___ > nginx-ru mailing list > nginx-ru@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru > ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Несколько CMS для разных URL
В общем, нарисовался вот такой конфиг, есть замечание, даже со статичным index.html все получается, есть замечание? location / { root /home/admin/web/site.com/public_html; location ~ ^/[A-Z][A-Za-z]*. { rewrite ^/(.*)$ /index2.php?q=$1 last; } if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?q=$1 last; } location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ { expires max; } location ~ [^/]\.php(/|$) { fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; if (!-f $document_root$fastcgi_script_name) { return 404; } fastcgi_pass127.0.0.1:9000; fastcgi_index index.php; include /etc/nginx/fastcgi_params; } location ~* ^.+\.(xml|ini|bin|sql|log)$ { denyall; return 403; } location ~* ^/(hosts|core|patches|db|others|tmp)/ { denyall; return 403; } } Posted at Nginx Forum: https://forum.nginx.org/read.php?21,272923,272965#msg-272965 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Несколько CMS для разных URL
чем плохо два локейшена ? 2017-03-15 18:01 GMT+05:00 valmon: > Нет, чтобы не делать два location > location ~* ^.+\.(xml|ini|bin|sql|log)$ { > denyall; > return 403; > } > location ~* ^/(hosts|core|patches|db|others)/ { > denyall; > return 403; > } > > Posted at Nginx Forum: https://forum.nginx.org/read. > php?21,272923,272960#msg-272960 > > ___ > nginx-ru mailing list > nginx-ru@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru > ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Несколько CMS для разных URL
Нет, чтобы не делать два location location ~* ^.+\.(xml|ini|bin|sql|log)$ { denyall; return 403; } location ~* ^/(hosts|core|patches|db|others)/ { denyall; return 403; } Posted at Nginx Forum: https://forum.nginx.org/read.php?21,272923,272960#msg-272960 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Несколько CMS для разных URL
если имеется в виду, что файлы с таким расширением только в таких папка, то через вложенные локейшены 15 марта 2017 г., 17:00 пользователь valmonнаписал: > И не говорите) > > Собственно вопрос, как к регулярным выражением для location ~* > ^.+\.(xml|ini|bin|sql|log)$ добавить директории типа style|public? > > Posted at Nginx Forum: https://forum.nginx.org/read. > php?21,272923,272957#msg-272957 > > ___ > nginx-ru mailing list > nginx-ru@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru > ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Несколько CMS для разных URL
И не говорите) Собственно вопрос, как к регулярным выражением для location ~* ^.+\.(xml|ini|bin|sql|log)$ добавить директории типа style|public? Posted at Nginx Forum: https://forum.nginx.org/read.php?21,272923,272957#msg-272957 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Несколько CMS для разных URL
аккуратнее с конфигами, чтобы демонов не вызвать :) 2017-03-15 16:17 GMT+05:00 valmon: > Да, вы правы, локация не в том порядке, вот что получилось, но как > выяснилось, по частям не вариант, получилось уже приличное количество > исключений, для отдачи 403 > location ~* ^.+\.(xml|ini|bin|sql|log)$ { > denyall; > return 403; > } > server { > listen 192.168.0.147:443; > server_name site.com; > root/home/admin/web/site.com/public_html; > index index.php index.html index.htm; > access_log /var/log/nginx/domains/site.com.log combined; > access_log /var/log/nginx/domains/site.com.bytes bytes; > error_log /var/log/nginx/domains/site.com.error.log error; > > ssl on; > ssl_certificate /home/admin/conf/web/ssl.site.com.pem; > ssl_certificate_key /home/admin/conf/web/ssl.site.com.key; > > location / { > root /home/admin/web/site.com/public_html; > location ~ ^/[A-Z][A-Za-z]*. { > if (!-e $request_filename) { > #rewrite ^/(.*)$ /core/Load.php?q=$1 last; Не работает > Inclede с относительным путем > rewrite ^/(.*)$ /index2.php?q=$1 last; > } > } > location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ { > expires max; > } > location ~ [^/]\.php(/|$) { > fastcgi_param SCRIPT_FILENAME > $document_root$fastcgi_script_name; > if (!-f $document_root$fastcgi_script_name) { > return 404; > } > > fastcgi_pass127.0.0.1:9000; > fastcgi_index index.php; > include /etc/nginx/fastcgi_params; > } > location ~* ^.+\.(xml|ini|bin|sql|log)$ { > denyall; > return 403; > } > } > > #error_page 403 /error/404.html; > #error_page 404 /error/404.html; > error_page 500 502 503 504 /error/50x.html; > > location /error/ { > alias /home/admin/web/site.com/document_errors/; > } > > location ~* "/\.(htaccess|htpasswd)$" { > denyall; > return 404; > } > > include /etc/nginx/conf.d/phpmyadmin.inc*; > include /etc/nginx/conf.d/phppgadmin.inc*; > include /etc/nginx/conf.d/webmail.inc*; > > include /home/admin/conf/web/snginx.site.com.conf*; > } > > Posted at Nginx Forum: https://forum.nginx.org/read. > php?21,272923,272951#msg-272951 > > ___ > nginx-ru mailing list > nginx-ru@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru > ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Несколько CMS для разных URL
Да, вы правы, локация не в том порядке, вот что получилось, но как выяснилось, по частям не вариант, получилось уже приличное количество исключений, для отдачи 403 location ~* ^.+\.(xml|ini|bin|sql|log)$ { denyall; return 403; } server { listen 192.168.0.147:443; server_name site.com; root/home/admin/web/site.com/public_html; index index.php index.html index.htm; access_log /var/log/nginx/domains/site.com.log combined; access_log /var/log/nginx/domains/site.com.bytes bytes; error_log /var/log/nginx/domains/site.com.error.log error; ssl on; ssl_certificate /home/admin/conf/web/ssl.site.com.pem; ssl_certificate_key /home/admin/conf/web/ssl.site.com.key; location / { root /home/admin/web/site.com/public_html; location ~ ^/[A-Z][A-Za-z]*. { if (!-e $request_filename) { #rewrite ^/(.*)$ /core/Load.php?q=$1 last; Не работает Inclede с относительным путем rewrite ^/(.*)$ /index2.php?q=$1 last; } } location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ { expires max; } location ~ [^/]\.php(/|$) { fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; if (!-f $document_root$fastcgi_script_name) { return 404; } fastcgi_pass127.0.0.1:9000; fastcgi_index index.php; include /etc/nginx/fastcgi_params; } location ~* ^.+\.(xml|ini|bin|sql|log)$ { denyall; return 403; } } #error_page 403 /error/404.html; #error_page 404 /error/404.html; error_page 500 502 503 504 /error/50x.html; location /error/ { alias /home/admin/web/site.com/document_errors/; } location ~* "/\.(htaccess|htpasswd)$" { denyall; return 404; } include /etc/nginx/conf.d/phpmyadmin.inc*; include /etc/nginx/conf.d/phppgadmin.inc*; include /etc/nginx/conf.d/webmail.inc*; include /home/admin/conf/web/snginx.site.com.conf*; } Posted at Nginx Forum: https://forum.nginx.org/read.php?21,272923,272951#msg-272951 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Несколько CMS для разных URL
"deny" и "return 403" взаимоисключающие, хватило бы любого из. насчет того, какой локейшен срабатывает, алгоритм описан, например, вот тут http://nginx.org/ru/docs/http/request_processing.html "nginx вначале ищет среди всех префиксных location’ов, заданных строками, максимально совпадающий. В вышеприведённой конфигурации указан только один префиксный location “/”, и поскольку он подходит под любой запрос, он и будет использован, если других совпадений не будет найдено. Затем nginx проверяет location’ы, заданные регулярными выражениями, в порядке их следования в конфигурационном файле. При первом же совпадении поиск прекращается и nginx использует совпавший location. Если запросу не соответствует ни одно из регулярных выражений, nginx использует максимально совпавший префиксный location, найденный ранее. " возможно, у вас порядок локейшенов задан такой, что срабатывает другая регулярка (я так понял, у вас запрос попадает под обе регулярки) 15 марта 2017 г., 14:55 пользователь valmonнаписал: > что делать с "можно слить файлы конфигурации" - в принципе, странно, что вы > > об этом думаете заранее. > > А не зря, реврайт из модуля для апача отправляет все кроме style|public на > index.php, тут же, все что не попадает под маску [A-Z][A-Za-z], > отрабатывается как статика и отображается. > Добавил > location ~* "/\.(htaccess|htpasswd|xml|ini)$" { > denyall; > return 403; > , но не работает. > > Posted at Nginx Forum: https://forum.nginx.org/read. > php?21,272923,272943#msg-272943 > > ___ > nginx-ru mailing list > nginx-ru@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru > ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Несколько CMS для разных URL
что делать с "можно слить файлы конфигурации" - в принципе, странно, что вы об этом думаете заранее. А не зря, реврайт из модуля для апача отправляет все кроме style|public на index.php, тут же, все что не попадает под маску [A-Z][A-Za-z], отрабатывается как статика и отображается. Добавил location ~* "/\.(htaccess|htpasswd|xml|ini)$" { denyall; return 403; , но не работает. Posted at Nginx Forum: https://forum.nginx.org/read.php?21,272923,272943#msg-272943 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Несколько CMS для разных URL
для настройки роутинга CMS общепринятая практика делать try_files, например, так https://book.cakephp.org/2.0/en/installation/url-rewriting.html логика тут примерно, как вы написали "если файл существует, то отдать его, если файла нет, или он с расширением php, то отправить на fastcgi" что делать с "можно слить файлы конфигурации" - в принципе, странно, что вы об этом думаете заранее. обычно, проблемы решаются по мере поступления )) а) необязательно файлы конфигурации хранить внутри сайта б) можно сделать вот так location /config/ { return 404; } в) можно хранить конфигурацию в виде php (а не ini, yml), это, кстати, самое выгодное в плане производительности. и такой файл (внутри которого определены только переменные) слить не получится. 2017-03-15 1:49 GMT+05:00 valmon: > В общем, получилась вот такая конструкция > location / { > root /home/admin/web/site.com/public_html; > location ~ ^/[A-Z][A-Za-z]*. { > if (!-e $request_filename) { > rewrite ^/(.*)$ /core/Load.php?q=$1 last; > } > } > > location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ { > expires max; > } > location ~ [^/]\.php(/|$) { > fastcgi_param SCRIPT_FILENAME > $document_root$fastcgi_script_name; > if (!-f $document_root$fastcgi_script_name) { > return 404; > } > > fastcgi_pass127.0.0.1:9000; > fastcgi_index index.php; > include /etc/nginx/fastcgi_params; > } > } > > Но получается, что можно слить файлы конфигурации, так как if (!-e > $request_filename) > > Posted at Nginx Forum: https://forum.nginx.org/read. > php?21,272923,272934#msg-272934 > > ___ > nginx-ru mailing list > nginx-ru@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru > ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Несколько CMS для разных URL
В общем, получилась вот такая конструкция location / { root /home/admin/web/site.com/public_html; location ~ ^/[A-Z][A-Za-z]*. { if (!-e $request_filename) { rewrite ^/(.*)$ /core/Load.php?q=$1 last; } } location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ { expires max; } location ~ [^/]\.php(/|$) { fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; if (!-f $document_root$fastcgi_script_name) { return 404; } fastcgi_pass127.0.0.1:9000; fastcgi_index index.php; include /etc/nginx/fastcgi_params; } } Но получается, что можно слить файлы конфигурации, так как if (!-e $request_filename) Posted at Nginx Forum: https://forum.nginx.org/read.php?21,272923,272934#msg-272934 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Несколько CMS для разных URL
Чтото не получается сделать рабочую регулярку /Invoce, /Invoce/* и /API/ Posted at Nginx Forum: https://forum.nginx.org/read.php?21,272923,272933#msg-272933 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Несколько CMS для разных URL
args не затрагиваются. Со слешем или без - на ваше усмотрение 14 марта 2017 г. 19:42 пользователь "valmon"написал: > Я так понимаю, работает только на /Invoce/, а если это конечный /Invoce, > плюс передаем args? > > Posted at Nginx Forum: https://forum.nginx.org/read. > php?21,272923,272931#msg-272931 > > ___ > nginx-ru mailing list > nginx-ru@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Несколько CMS для разных URL
Я так понимаю, работает только на /Invoce/, а если это конечный /Invoce, плюс передаем args? Posted at Nginx Forum: https://forum.nginx.org/read.php?21,272923,272931#msg-272931 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Несколько CMS для разных URL
location ~ ^/[A-Z][a-z]*./ { ... } 14 марта 2017 г., 18:07 пользователь valmonнаписал: > Это замечательно, вот только пример не могу найти, чтобы регулярные > выражение действовали по условию первая в верхнем регистре, далее в нижнем > любой длины. > > Posted at Nginx Forum: https://forum.nginx.org/read. > php?21,272923,272928#msg-272928 > > ___ > nginx-ru mailing list > nginx-ru@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru > ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Несколько CMS для разных URL
Это замечательно, вот только пример не могу найти, чтобы регулярные выражение действовали по условию первая в верхнем регистре, далее в нижнем любой длины. Posted at Nginx Forum: https://forum.nginx.org/read.php?21,272923,272928#msg-272928 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Несколько CMS для разных URL
нет, не надо ничего добавлять. да, конечно, вместо префиксных локейшенов можно использовать регулярные выражения. 14 марта 2017 г., 16:54 пользователь valmonнаписал: > Насколько я понял, он просто добавить к /Invoce /Invoce/index > А есть какие либо регулярные выражения чтобы отфильтровать по первому > символу в верхнем регистре? > > Posted at Nginx Forum: https://forum.nginx.org/read. > php?21,272923,272926#msg-272926 > > ___ > nginx-ru mailing list > nginx-ru@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru > ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Несколько CMS для разных URL
Насколько я понял, он просто добавить к /Invoce /Invoce/index А есть какие либо регулярные выражения чтобы отфильтровать по первому символу в верхнем регистре? Posted at Nginx Forum: https://forum.nginx.org/read.php?21,272923,272926#msg-272926 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Несколько CMS для разных URL
Префиксные локейшены и try_files 14 марта 2017 г. 13:49 пользователь "valmon"написал: > Коллеги, подскажите направление. > Необходимо совместить работу двух cms на одном домене, первая cms > самописный > биллинг, урлы у которого начинаются с буквы в верхнем регистре, например > /Invoce, /Clause, /Bonuses, /API/*, обработчик для которых является > /Core/Load.php, вторая cms, modx, корень вообще хочу сделать статичным. > Собственно, какие варианты? > > Posted at Nginx Forum: https://forum.nginx.org/read. > php?21,272923,272923#msg-272923 > > ___ > nginx-ru mailing list > nginx-ru@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru