Не указан входной файл: не удается настроить псевдоним NGINX - PullRequest
0 голосов
/ 04 октября 2018

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

У меня не было проблем с наличием двух местоположений перед добавлением одного с псевдонимом.

Расположение / с псевдонимом notn 'т работа.Расположение / dev без псевдонима работает.Я хотел бы использовать два псевдонима, потому что у меня есть две папки: prod и dev .

Вот мой текущий conf:

server {
    listen       80;
    listen   [::]:80;
    server_name  domain.com www.domain.com;

    root /home/domain/public_html/www/;
    index index.html index.htm index.php index2.php;

    location / {
        alias /home/domain/public_html/www/prod/;
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }


    location /dev {
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    location ~* \.php$ {
      fastcgi_pass     127.0.0.1:9000;
      include          fastcgi_params;
      fastcgi_param    SCRIPT_FILENAME    $request_filename;
      fastcgi_param    SCRIPT_NAME        $fastcgi_script_name;
    }

    charset utf-8;

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }
    location ~ /\.ht {
        deny all;
    }
}

Происходит то, что доступ к domain.com/dev/ работает отлично, но как только он находится в расположении /, я получаю сообщение об ошибке «файл не указан».

Если я введу domain.com/license.txt,Я могу видеть лицензионный файл Wordpress.Если я пытаюсь domain.com/index.php, я получаю сообщение об ошибке.

Я уже использую $ request_filename, чтобы избежать проблем с root и псевдонимом, любая идея?

1 Ответ

0 голосов
/ 04 октября 2018

Вам не нужно использовать alias в этой схеме, но если вы хотите запустить PHP с двумя отдельными корнями, вам нужно будет использовать вложенный блок location.

Например:

root /home/domain/public_html/www/prod;

location / {
    try_files $uri $uri/ /index.php?q=$uri&$args;
}
location ~* \.php$ {
  fastcgi_pass     127.0.0.1:9000;
  include          fastcgi_params;
  fastcgi_param    SCRIPT_FILENAME    $request_filename;
  fastcgi_param    SCRIPT_NAME        $fastcgi_script_name;
}

location ^~ /dev {
    root /home/domain/public_html/www;

    try_files $uri $uri/ /dev/index.php?q=$uri&$args;

    location ~* \.php$ {
        fastcgi_pass     127.0.0.1:9000;
        include          fastcgi_params;
        fastcgi_param    SCRIPT_FILENAME    $request_filename;
        fastcgi_param    SCRIPT_NAME        $fastcgi_script_name;
    }
}

Первые два location блока - это ваша /prod/ конфигурация с правильными root для разрешения URI, такими как /index.php.

Последний location и вложенный *Блоки 1015 * - это ваша конфигурация /dev/.Для root установлено правильное значение для разрешения URI, например /dev/index.php.

Подробнее см. в этом документе .

...