Я пытаюсь настроить nginx для использования двух разных корней документа в зависимости от URL-адреса, поэтому, если кто-то подключится к www.example.com, получит сайт из / portal / public_html, но если клиент подключится к www.example.com/account получит сайты из другого каталога / portal2 / public, и этот сайт должен обслуживаться php 7. Я использую переменные в конфигурации nginx для достижения своей цели, но что-то работает не так, как я думал. Я получаю ошибку 500. В моих журналах я вижу, что nginx ищет файлы сайта в своем каталоге по умолчанию "/ usr / share / nginx / html"
2017/11/20 10:31:38 [debug] 21729#0: *421789 fastcgi param: "DOCUMENT_ROOT: /usr/share/nginx/html
Может быть, конфигурация будет проще читать и понимать, тогда мой ржавый английский, так что это моя конфигурация nginx:
server { listen 81 default; server_name www.example.com; access_log /var/log/nginx/www.example.com.access.log; error_log /var/log/nginx/www.example.com.error.log debug; location / { set $my_root /portal/public_html; #PHP v5 set $php_host_port 127.0.0.1:9000; root /$my_root; index index.php; proxy_read_timeout 200; include /nginx_conf/portal_rewrite_params; } location ~^/(account|new-cart|signin|register|n) { set $my_root /portal2/public; root $my_root; proxy_read_timeout 200; index index.php; try_files $uri $uri/ /index.php$is_args$args; #PHP v7 set $php_host_port 127.0.0.1:9071; } location ~ \.php$ { fastcgi_pass $php_host_port; fastcgi_index index.php; include /nginx_conf/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $document_root; } }
Итак, мой вопрос, как добиться, чтобы nginx обслуживал один и тот же сайт из другого корня документа и использовал разные php в зависимости от URL-адреса? Мой подход хорош?
Моя среда - centos 7, nginx / 1.10.2, php 5.6 и php7.1
Ваши переменные сбивают с толку ..
root /portal/public_html;
location ~^/(account|new-cart|signin|register|n) {
root /portal2/public;
index index.php;
location ~* \.php {
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_pass 127.0.0.1:9071;
# include other fascgi_params
}
}
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~* \.php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $document_root;
# include other fascgi_params
}