@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

Спасибо!
  • Вопрос задан
  • 4996 просмотров
Пригласить эксперта
Ответы на вопрос 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 не надо. Задав однажды его уже не сменить.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
play! Москва
До 100 000 руб.
Salesbeat Москва
от 100 000 до 150 000 руб.
Платформа НТИ Москва
от 250 000 до 290 000 руб.
26 июн. 2019, в 14:56
300 руб./в час
26 июн. 2019, в 14:54
2500 руб./за проект