server {
listen 80;
server_name ~^(?<cc>.+?).local.solar.bc.digital$;
client_max_body_size 1m;
root /home/vagrant/sites/$cc/_www/;
index index.html index.htm index.php;
error_page 404 /index.php;
access_log /var/log/nginx/$cc-access.log;
error_log /var/log/nginx/$cc-error.log;
charset utf-8;
sendfile off;
location/{
root /home/vagrant/sites/$cc/_www/php/;
try_files $uri $uri/ /index.php?$query_string;
}
location /shop/ {
# root /home/vagrant/sites/$cc/_www/bcshop/;
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param APP_ENV dev;
fastcgi_param PLATFORM_ENVIRONMENT local;
fastcgi_read_timeout 300;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
}
location ~ /\.ht {
deny all;
}
}
맞아요. 내가하려고하는 것을 보았다면, 그것이 효과가 없다는 것을 알아라!Nginx 여러 위치에 각각 고유 한 루트가 있습니다.
일부 세부 사항은 : 나는 에러가 발생하지 않고 있기 때문에
- 나는 일반 '루트'를 가지고있다.
- 이것은 개발 용 로컬 VM에 있습니다. 우리는 각 프로젝트마다 위의 설정에서 $ cc 변수를 참조하는 배포 도구를 로컬로 가지고 있으며 최대 두 개의 응용 프로그램을 배포 할 수 있습니다. 각각의 프로젝트마다 반드시 둘 다 배포되는 것은 아닙니다. 첫 번째 앱은
/home/vagrant/sites/$cc/_www/php
에 배포되고 두 번째 앱은/home/vagrant/sites/$cc/_www/bcshop
(내가 만들 수 있습니다. 설정에서 볼 수 있습니다) - - 두 앱 모두 드루팔 (Drupal에서 실행되므로로드가 동일합니다. 나는 그 (것)들을 일하게 단순히 만들 수 없다. 내가 시도한 작은 변형의 대부분과 함께 파일을 찾을 수 없습니다.
- 두 번째 앱을
/home/vagrant/sites/$cc/_www/shop
(예 :/home/vagrant/sites/$cc/_www/bcshop
)에 배치하면 홈페이지가로드 될 수 있지만 다른 것은 없습니다. - 두 번째 앱을 무시하고 첫 번째 앱에만 집중하면 일반 루트를
/home/vagrant/sites/$cc/_www/php
으로 설정하고/
에서 로컬 루트를 삭제하면됩니다. 그거야. 그러나 로컬 루트로 지정된 경우에는 그렇지 않습니다. 이 경우 로그에서이 오류가 발생합니다. "FastCGI가 stderr로 전송되었습니다 :"업스트림에서 응답 헤더를 읽는 동안 "기본 스크립트를 알 수 없음". 이것은 첫 번째 앱에만 해당됩니다. - 일반적인 루트가 그 값으로 설정된 이유가 궁금하다면, 일반적인 루트가 일치되는 위치에 대해 검증 할 수없는 경우 로그에 오류가 발생하기 때문입니다. 말이된다?
내가 요약 한 내용을 거의 다 설명했다고 생각합니다.
생각하십니까?
저는 전문가가 아니기 때문에 시험 및 기타 도움을 받아 여기에서 답변을 드리겠습니다. 그러나 지금까지는 기쁨이 없습니다.
감사합니다.
귀하의 * 글로벌 * 루트가 위치'에 의해 사용됩니다 ~ \ .PHP $'는'$의 request_filename'를 해결하기 위해. 여전히 PHP 파일에는'/ home/vagrant/sites/$ cc/_www'를 사용하고 그 밖의 모든 것에 대해서는'/ home/vagrant/sites/$ cc/_www/php'를 왜 사용하는지 이해하지 못합니다. –
@ 리차드 스미스 좋은 지적입니다. 나는 그 자신을 의심했다. 그러나 나는 일반적인 루트가 존재 테스트를 실패하지 않아야한다는 나의 이슈를 해결할 방법을 모른다. (예 :'testing '/ home/vagrant/sites/shop/_www/php "존재하지 못했습니다."). 두 위치 모두에 대해 PHP를 처리하려면'location ~ \ .php $'를 사용하고 싶습니다. 가능한? 'location ~ \ .php $'의 루트는 첫 번째 위치와/home/vagrant/sites/$ cc/_www/bcshop'과 일치 할 때'/ home/vagrant/sites/$ cc/_www/php'가되어야합니다. 두 번째와 일치 할 때. 방법? –