@Kev

Как поменять у nginx root при определенном url?

Добрый день.

Имеем такой конфиг nginx:
server {
	listen 80;
	server_name test.loc;
	root /var/www/test;
	
	error_log /var/log/nginx/mytest.log;
	index index.html index.php;
	
	location / {
	
	    index index.html index.php;
	    #try_files $uri $uri/ /index.php?$args;
	    set $root /var/www/test;
	}
	
	location /sample {
	   
	    index index.html index.php;
	    #try_files $uri $uri/ /index.php?$args;
	    alias /var/www/test2;
	    
	    
	    location ~ \.php$ {
		include fastcgi_params;
		fastcgi_param PATH_INFO $fastcgi_path_info;
		fastcgi_index index.php;
		fastcgi_param	PATH_TRANSLATED  $document_root$fastcgi_script_name;
		fastcgi_param	SCRIPT_FILENAME $document_root$fastcgi_script_name;
		fastcgi_pass   127.0.0.1:9000;
	    }
	}
	
	location ~ \.php$ {
  
	  include fastcgi_params;
	  fastcgi_param PATH_INFO $fastcgi_path_info;
	  fastcgi_index index.php;
	  fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_script_name;
	  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	  fastcgi_pass   127.0.0.1:9000;
	}
	
}

имеем такую структуру
/var/www/test/index.php
/var/www/test2/index.php
/var/www/test2/sample/index.php

Когда заходим на урл test.loc видим содержимое файла /var/www/test/index.php
Когда заходим на урл test.loc/sample видим содержимое файла /var/www/test2/sample/index.php

Подскажите, пожалуйста, как можно сделать так, чтобы на урлах test.loc/sample* выполнялся файл /var/www/test2/index.php?
На данный момент при смене location, к примеру на qqq, сервер ломится в /var/www/test2/qqq/index.php

Спасибо!
  • Вопрос задан
  • 8201 просмотр
Пригласить эксперта
Ответы на вопрос 4
@barsukoff
мне хватает такой записи для работы phpmyadmin из папки внутри сайта:

location /myadmin {
	    index index.php;
}
Ответ написан
Комментировать
fornit1917
@fornit1917
Например как-то так:

location /samle {
   root /var/www/test2/sample;
   rewrite ^sample/(.*)$ /$1 break;
}
Ответ написан
Комментировать
@Kev Автор вопроса
При таком конфиге "No input file specified."
location /sample {
	    index index.html index.php;
	    #try_files $uri $uri/ /index.php?$args;
	    alias /var/www/test2/sample;
	    rewrite ^sample/(.*)$ /$1 break;
	    
	    location ~ \.php$ {
		include fastcgi_params;
		fastcgi_param PATH_INFO $fastcgi_path_info;
		fastcgi_index index.php;
		fastcgi_param	PATH_TRANSLATED  $document_root$fastcgi_script_name;
		fastcgi_param	SCRIPT_FILENAME $document_root$fastcgi_script_name;
		fastcgi_pass   127.0.0.1:9000;
	    }
	}


При таком 404 Not Found
location /sample {
	    root /var/www/test2/sample;
	    rewrite ^sample/(.*)$ /$1 break;
	}


Меняю в последнем примере root на /var/www/test2 - снова No input file specified.
Ответ написан
@Nc_Soft
Задавайте root внутри локейшенов, без всяких set, а в секции server не надо. Задав однажды его уже не сменить.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 11:20
1000 руб./за проект
25 апр. 2024, в 11:02
5000 руб./за проект
25 апр. 2024, в 10:42
150000 руб./за проект