2017-02-11 34 views
1

У меня возникла проблема с настройкой сервера nginx для основного приложения yii2.Конфигурация Nginx Yii2 в разных папках

Вот мой сервис блок файла:

server { 
    listen  80 ; 

    access_log /var/log/nginx/access-server.log; 
    error_log /var/log/nginx/error-server.log; 

    charset utf-8; 

    location /fetch { 
      root /usr/share/nginx/html/another_folder/web/; 
      try_files $uri $uri/ /index.php$is_args$args; 
    } 

     location ~ \.php$ { 
      fastcgi_split_path_info ^(.+\.php)(/.+)$; 
      fastcgi_pass 127.0.0.1:9000; 
      fastcgi_index index.php; 
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
      include  fastcgi_params; 
     } 

} 

Мой проект находится в другой папке "another_folder". И я хочу, чтобы пользователь присылал URL: http://ip/fetch файлы nginx будут обслуживать файлы из другой папки.

Мой файл журнала ошибок возвращает меня:

2017/02/11 12:38:52 [error] 4242#0: *12 FastCGI sent in stderr: "Unable to open primary script: /usr/share/nginx/html/index.php (No such file or directory)" while reading response header from upstream 

И брат показывает: Нет входной файл.

Можете ли вы помочь мне с этой проблемой?

Спасибо!

+0

Вы хотите, чтобы '/ fetch/index.php' располагался в'/usr/share/nginx/html/another_folder/web/index.php' или '/ usr/share/nginx/html/another_folder/web/принести/index.php'? –

+0

В этой папке: /usr/share/nginx/html/another_folder/web/index.php – Farkhad

+1

Вам нужно использовать директиву 'alias'. См. [Этот ответ] (http://stackoverflow.com/questions/42137658/nginx-forwarding-few-localhosts-to-php-fpm/42138410#42138410). –

ответ

1

В дополнение к вашему комментарию, любой URI, начинающийся с /fetch, который не соответствует статическому файлу в псевдонимом пути, должен быть перенаправлен на /fetch/index.php.

location ^~ /fetch { 
    alias /usr/share/nginx/html/another_folder/web; 

    if (!-e $request_filename) { rewrite^/fetch/index.php last; } 

    location ~ \.php$ { 
     if (!-f $request_filename) { return 404; } 

     include  fastcgi_params; 
     fastcgi_param SCRIPT_FILENAME $request_filename; 
     fastcgi_pass 127.0.0.1:9000; 
    } 
} 

Мы избегаем использования try_files с alias из-за this long term issue.

См. this caution относительно использования if.