@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

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

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

Войти через центр авторизации
Похожие вопросы