Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / настрой nginx для длинного URL / 25 сообщений из 32, страница 1 из 2
24.01.2017, 19:37
    #39390609
настрой nginx для длинного URL
добрый день.

есть вот такой URL
http://uz2.love-kitchen.ru/srm/gate.php/zakaz/opendoc/4545

на что сервер отвечает

"Страница uz2.love-kitchen.ru не работает
Сайт uz2.love-kitchen.ru выполнил переадресацию слишком много раз"

настройка nginx:

server {
server_name uz2.love-kitchen.ru;
#access_log /var/log/nginx/newsite.com-access.log;
#error_log /var/log/nginx/newsite.com-error.log;
root /var/www/vhosts/uz.lk.ru;

location / {
index index.html index.htm index.php;
try_files $uri $uri/ /index.php;
}
location ~ .php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
try_files $uri $uri/ /index.php;
fastcgi_param SCRIPT_FILENAME /var/www/vhosts/uz.lk.ru$fastcgi_script_name;
}
}

особенности такие:
нужно что бы URL запрос uz2.love-kitchen.ru
обрабатывался index.php
т.е. как обычно.
с данными настройками это работает без проблем.

а вот запрос
http://uz2.love-kitchen.ru/srm/gate.php/zakaz/opendoc/4545
нужно что бы вызывал gate.php
и всю оставшеюся строку отдавал ему как параметр штоли.

сайт отлично работал на apache, а вот после переезда на ngix
перестал работать на запросах вида http://uz2.love-kitchen.ru/srm/gate.php/zakaz/opendoc/4545
просто сообщает "Сайт uz2.love-kitchen.ru выполнил переадресацию слишком много раз."
скрипт файла gate.php даже не пытается выполниться.

помогите плиз настроить для работы с обеими типами запроса.

спасибо.
...
Рейтинг: 0 / 0
24.01.2017, 23:24
    #39390682
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настрой nginx для длинного URL
Боровиков Степаннужно что бы вызывал gate.php
и всю оставшеюся строку отдавал ему как параметр штоли.
Код: none
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
location = /srm/gate.php/zakaz/opendoc/[0-9]+ { 
    rewrite "/srm/gate.php/zakaz/opendoc/([0-9]+)" http://uz2.love-kitchen.ru/srm/gate.php?zakaz=$1 break;
}

location ~ .php$ {
    location ~ \..*/.*\.php$ {return 404;}
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /var/www/vhosts/uz.lk.ru$fastcgi_script_name;
    include /etc/nginx/fastcgi_params;
}
...
Рейтинг: 0 / 0
24.01.2017, 23:31
    #39390687
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настрой nginx для длинного URL
Usman
Код: none
fastcgi_param SCRIPT_FILENAME /var/www/vhosts/uz.lk.ru$fastcgi_script_name;
замените на:
Код: sql
1.
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
...
Рейтинг: 0 / 0
25.01.2017, 07:47
    #39390741
настрой nginx для длинного URL
Usman,

zakaz это контролер, opendoc это метод контролера.
после слеша, параметр метода.
т.е. на практике эти значения в url будут меняться.
...
Рейтинг: 0 / 0
25.01.2017, 08:04
    #39390747
настрой nginx для длинного URL
в gate.php делается приблизительно следующее:

....
//разделяем URL по символу "/"
$routes = explode('/', $_SERVER['REQUEST_URI']);
// получаем имя контроллера
if ( !empty($routes[3]) )
{
$controller_name = $routes[3];
}

// получаем имя метода контролера
if ( !empty($routes[4]) )
{
$action_name = $routes[4];
}
.....


т.е. мне похоже нужно что бы просто запустился скрипт gate.php
а строка $_SERVER['REQUEST_URI'] вернула url который указали в броузере
...
Рейтинг: 0 / 0
26.01.2017, 14:24
    #39392097
настрой nginx для длинного URL
я так понимаю, что мне нужно написать
некое регулярное выражение после директивы "location", которое бы соответсвовало моему запросу:
http://uz2.love-kitchen.ru/srm/gate.php/zakaz/opendoc/4545
где
zakaz, opendoc, 4545 могут быть любыми.
При этом nginx не ругался и вызывал скрипт по адресу
/var/www/vhosts/uz.lk.ru/srm/gate.php

location <регулярное вырожение> {
Что то вписать тут
}


подскажите, какое должно быть регулярное выражение.
и заставить выполнится gate.php
который лежит /var/www/vhosts/uz.lk.ru/srm/
...
Рейтинг: 0 / 0
26.01.2017, 14:39
    #39392109
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настрой nginx для длинного URL
Боровиков Степан,

Попробуйте добавить блок выделенный желтым:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
location / {
    index index.html index.htm index.php;
    try_files $uri $uri/ /index.php;
}

location ~ .php$ {
    location ~ \..*/.*\.php$ {return 404;}
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    include /etc/nginx/fastcgi_params;
}

location ~*$ {
    try_files $uri $uri/;
}
...
Рейтинг: 0 / 0
26.01.2017, 15:19
    #39392154
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настрой nginx для длинного URL
Боровиков Степанподскажите, какое должно быть регулярное выражение.
Код: sql
1.
2.
3.
location = /srm/gate.php/\w+/\w+/\d+ { 
    rewrite "/srm/gate.php/(\w+)/(\w+)/(\d+)" http://uz2.love-kitchen.ru/srm/gate.php?controller=$1&method=$2&docId=$3 break;
}

в $routes должны попасть 3 переменные выделенные красным
...
Рейтинг: 0 / 0
26.01.2017, 19:47
    #39392441
настрой nginx для длинного URL
Usman,

при

location = /srm/gate.php/\w+/\w+/\d+ {
fastcgi_index gate.php;
fastcgi_param SCRIPT_FILENAME /var/www/vhosts/uz.lk.ru/srm$fastcgi_script_name;
root /var/www/vhosts/uz.lk.ru/srm;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
try_files $uri $uri/ /gate.php;
}

все равно пишет что переадресация слишком много раз. т.е. location = /srm/gate.php/\w+/\w+/\d+
не канает

а если не заморачиваться с переменными. иначе придется переписывать дофига.
Ведь инструкци $_SERVER['REQUEST_URI'] один черт получит URL

поэтому тупо сделать так что бы выполнился gate.php при запросе:
http://uz2.love-kitchen.ru/srm/gate.php/<контролер>/<метод>/<параметр1>/<параметр2>
gate.php kt;bn nen /var/www/vhosts/uz.lk.ru/srm/gate.php

и обычный index.php при любом другом URL
index.php лежит тут /var/www/vhosts/uz.lk.ru
...
Рейтинг: 0 / 0
26.01.2017, 19:54
    #39392447
настрой nginx для длинного URL
Боровиков Степан,

вообще фигня какая то, не понимаю. в лоб написал такой файл настройки

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
server {
    server_name uz2.love-kitchen.ru;
    access_log /var/www/vhosts/uz.lk.ru/log/access.log;
    error_log  /var/www/vhosts/uz.lk.ru/log/error.log;

    location / {
    	index index.html index.htm index.php;
	try_files  $uri $uri/ /index.php;
	root /var/www/vhosts/uz.lk.ru;
    }

    location ~ .php$ {
        root /var/www/vhosts/uz.lk.ru;
	include /etc/nginx/fastcgi_params;
        fastcgi_pass  127.0.0.1:9000;
	fastcgi_index index.php;
	try_files  $uri $uri/ /index.php;
        fastcgi_param SCRIPT_FILENAME /var/www/vhosts/uz.lk.ru$fastcgi_script_name;
    }

    location = /srm/gate.php/zakaz/opendoc/125 {
        root /var/www/vhosts/uz.lk.ru/srm;
 	fastcgi_index gate.php;
        fastcgi_param SCRIPT_FILENAME /var/www/vhosts/uz.lk.ru/srm$fastcgi_script_name;
       	include /etc/nginx/fastcgi_params;
        fastcgi_pass  127.0.0.1:9000;
	try_files  $uri $uri/ /gate.php;
     }

}



делаю запрос:
http://uz2.love-kitchen.ru/srm/gate.php/zakaz/opendoc/125

т.е. он должен был совпасть с location = /srm/gate.php/zakaz/opendoc/125 {.....
и выполниться gate.php из корневого каталога /var/www/vhosts/uz.lk.ru/srm

но ничего подобного. броузер пишет:
Сайт uz2.love-kitchen.ru выполнил переадресацию слишком много раз.

почему так?
...
Рейтинг: 0 / 0
26.01.2017, 19:57
    #39392448
настрой nginx для длинного URL
при location ~*$ {

тоже самое
...
Рейтинг: 0 / 0
26.01.2017, 20:04
    #39392453
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настрой nginx для длинного URL
Боровиков Степан,

Попробуйте вместо break выставить permanent :
Код: sql
1.
2.
3.
location = /srm/gate.php/\w+/\w+/\d+ { 
    rewrite "/srm/gate.php/(\w+)/(\w+)/(\d+)" http://uz2.love-kitchen.ru/srm/gate.php?controller=$1&method=$2&docId=$3 permanent;
}

см. тут
...
Рейтинг: 0 / 0
26.01.2017, 20:13
    #39392456
настрой nginx для длинного URL
Usman,
мне кажется это что то не то.

во превых параметры... мне переписывать придется пол сайта.
воторых само выражение /srm/gate.php/\w+/\w+/\d+ тоже не понимается ngix
он все равно ругается на переадресацию.

в то время как в gate.php я уже просто написала echo ('привет');

сейчас вот что сделал

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
server {
    server_name uz2.love-kitchen.ru;
    access_log /var/www/vhosts/uz.lk.ru/log/access.log;
    error_log  /var/www/vhosts/uz.lk.ru/log/error.log;

    root /var/www/vhosts/uz.lk.ru/srm;

    location = /srm/gate.php/zakaz/opendoc/125 {
 	
       	include /etc/nginx/fastcgi_params;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
	try_files  $uri $uri/ /index.php;
	fastcgi_param SCRIPT_FILENAME /var/www/vhosts/uz.lk.ru/srm$fastcgi_script_name;

     }

}



при запросе
http://uz2.love-kitchen.ru/srm/gate.php/zakaz/opendoc/125

ошибки связанной с переадресацие нет.
но броузер не выполняет php скрипт файла index.php а просто скачивает его на комп :(
...
Рейтинг: 0 / 0
26.01.2017, 20:15
    #39392458
настрой nginx для длинного URL
сори.
сервер не выполняет скрипт. а просто отдает броузеру файл на закачку
...
Рейтинг: 0 / 0
26.01.2017, 20:18
    #39392463
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настрой nginx для длинного URL
Боровиков Степанвоторых само выражение /srm/gate.php/\w+/\w+/\d+ тоже не понимается ngixпоправил:
Код: sql
1.
2.
3.
location = /srm/gate.php/\.*/\.*/\[0-9]+ { 
    rewrite "/srm/gate.php/(.*)/(.*)/([0-9]+)" http://uz2.love-kitchen.ru/srm/gate.php?controller=$1&method=$2&docId=$3 last;
}
...
Рейтинг: 0 / 0
26.01.2017, 20:20
    #39392465
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настрой nginx для длинного URL
ошибся:
Код: sql
1.
location = /srm/gate.php/.*/.*/[0-9]+ { ... }
...
Рейтинг: 0 / 0
26.01.2017, 20:34
    #39392470
настрой nginx для длинного URL
Usman,

запрос
uz2.love-kitchen.ru/srm/gate.php/zakaz/opendoc/125

настройка:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
server {
    server_name uz2.love-kitchen.ru;
    access_log /var/www/vhosts/uz.lk.ru/log/access.log;
    error_log  /var/www/vhosts/uz.lk.ru/log/error.log;

    location / {
    	index index.html index.htm index.php;
	try_files  $uri $uri/ /index.php;
	root /var/www/vhosts/uz.lk.ru;
    }


    location = /srm/gate.php/.*/.*/[0-9]+ {
        root /var/www/vhosts/uz.lk.ru/srm;
 	fastcgi_index gate.php;
        fastcgi_param SCRIPT_FILENAME /var/www/vhosts/uz.lk.ru/srm$fastcgi_script_name;
       	include /etc/nginx/fastcgi_params;
        fastcgi_pass  127.0.0.1:9000;
	try_files  $uri $uri/ /gate.php;
     }

}



просто скачивает фаил index.php
...
Рейтинг: 0 / 0
26.01.2017, 20:42
    #39392479
настрой nginx для длинного URL
Usman,

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
server {
    server_name uz2.love-kitchen.ru;
    access_log /var/www/vhosts/uz.lk.ru/log/access.log;
    error_log  /var/www/vhosts/uz.lk.ru/log/error.log;

    location / {
    	index index.html index.htm index.php;
	try_files  $uri $uri/ /index.php;
	root /var/www/vhosts/uz.lk.ru;
    }

    location /srm/gate.php/.*/.*/[0-9]+ {
        root /var/www/vhosts/uz.lk.ru/srm;
 	fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /var/www/vhosts/uz.lk.ru/srm$fastcgi_script_name;
       	include /etc/nginx/fastcgi_params;
        fastcgi_pass  127.0.0.1:9000;
	try_files  $uri $uri/ /index.php;
     }

}



он похоже не заходит в ветку location /srm/gate.php/.*/.*/[0-9]+ {.....
...
Рейтинг: 0 / 0
26.01.2017, 20:48
    #39392487
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настрой nginx для длинного URL
Боровиков Степанпросто скачивает фаил index.phpэто из-за try_files
...
Рейтинг: 0 / 0
26.01.2017, 20:52
    #39392494
настрой nginx для длинного URL
Usman,

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
server {
    server_name uz2.love-kitchen.ru;
    access_log /var/www/vhosts/uz.lk.ru/log/access.log;
    error_log  /var/www/vhosts/uz.lk.ru/log/error.log;
    root /var/www/vhosts/uz.lk.ru/srm;

    location /srm/gate.php/zakaz/opendoc/125 {
        
 	fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /var/www/vhosts/uz.lk.ru/srm$fastcgi_script_name;
       	include /etc/nginx/fastcgi_params;
        fastcgi_pass  127.0.0.1:9000;
	
     }

}




что то случилось хорошее. но не то.

броузер написал "File not found."

хотя в index.php

вот такая запись

Код: php
1.
2.
3.
4.
5.
<?php

 echo ("srm gate");

?>
...
Рейтинг: 0 / 0
26.01.2017, 20:54
    #39392495
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настрой nginx для длинного URL
Вам скорее всего нужен fastcgi_split_path_info :
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
location ~ \.php$ {
    try_files $uri=404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_index index.php;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME /var/www/vhosts/uz.lk.ru/srm$fastcgi_script_name;
    include /etc/nginx/fastcgi_params;
    fastcgi_intercept_errors on;
}

location / {
    index index.php;
    try_files $uri $uri/ $uri.php;
}

порядок нужно сохранить
...
Рейтинг: 0 / 0
26.01.2017, 20:57
    #39392497
настрой nginx для длинного URL
Usman,

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
location /srm/gate.php/zakaz/opendoc/125 {
        
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_index index.php;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME /var/www/vhosts/uz.lk.ru/srm$fastcgi_script_name;
    include /etc/nginx/fastcgi_params;
    fastcgi_intercept_errors on;
	
     }



все равно фаил не найден

try_files $uri=404; ругается при перезапуске nginx
...
Рейтинг: 0 / 0
26.01.2017, 20:59
    #39392500
настрой nginx для длинного URL
Usman,

мне по сути просто нужно что бы
при uz2.love-kitchen.ru/srm/gate.php/zakaz/opendoc/125
отработал скрипт в gate.php (ну или хрен с ним пусть будет index.php)
...
Рейтинг: 0 / 0
26.01.2017, 21:05
    #39392503
настрой nginx для длинного URL
Usman,

вот такая ошибка в логе

2017/01/26 23:03:35 [error] 8510#8510: *2 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 192.168.0.12, server: uz2.love-kitchen.ru, request: "GET /srm/gate.php/zakaz/opendoc/125 HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "uz2.love-kitchen.ru"


на запрос
http://uz2.love-kitchen.ru/srm/gate.php/zakaz/opendoc/125

при настроках

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
server {
    server_name uz2.love-kitchen.ru;
    access_log /var/www/vhosts/uz.lk.ru/log/access.log;
    error_log  /var/www/vhosts/uz.lk.ru/log/error.log;
	
    root /var/www/vhosts/uz.lk.ru/srm;

    location /srm/gate.php/zakaz/opendoc/125 {
        
 	fastcgi_index index.php;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME /var/www/vhosts/uz.lk.ru/srm$fastcgi_script_name;
       	include /etc/nginx/fastcgi_params;

	
     }

}
...
Рейтинг: 0 / 0
26.01.2017, 21:22
    #39392509
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настрой nginx для длинного URL
Боровиков Степан,

попробуйте заменить строку:
Код: sql
1.
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / настрой nginx для длинного URL / 25 сообщений из 32, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]