Назад | Перейти на главную страницу

Как настроить nginx для обслуживания одного сайта из двух разных корней документов и с использованием разных PHP в зависимости от URL

Я пытаюсь настроить 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
 }