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

Проблема с вложенным расположением NginX: выдача сырого PHP

Я изо всех сил пытался понять логику NginX при обработке порядка расположения, но это все еще вне меня, и я подозреваю, что именно поэтому у меня возникает следующая проблема.

Я запускаю экземпляр SugarCRM, который заблокирован базовой аутентификацией. Есть несколько файлов, таких как ical_server.php, для которых я хочу отключить базовую аутентификацию, чтобы смартфоны могли легко получить доступ к этому подписанному календарю, который уже имеет собственную безопасность на основе токенов.

Это у меня в конф. Но ical_server.php загружается как необработанный php, что предполагает, что он не достигает парсера fastcgi, хотя остальная часть CRM работает нормально.

location /sugarcrm/ {
    auth_basic "Username and Password are required";
    auth_basic_user_file /var/web/webaddress.tld/private/.htpasswd;
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
            location ~ _server.php$ {
                    auth_basic "off";
            }
            try_files $uri =404;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_read_timeout 600;
            fastcgi_send_timeout 600;
            fastcgi_max_temp_file_size 0;
            fastcgi_buffer_size 56k;
            fastcgi_buffers 16 48k;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
    }
}

Как я могу добиться этого избирательного отключения auth basic?

Поскольку я не могу наградить Алексея Тен правильным ответом через его комментарий, вот рабочий конфиг:

    location /sugarcrm/ {
    auth_basic "Username and Password are required";
    auth_basic_user_file /var/web/webaddress.tld/private/.htpasswd;
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
            location ~ _server.php$ {
                    auth_basic "off";
                    include /etc/nginx/conf.d/global/fastcgi.conf;
            }
            try_files $uri =404;
            include /etc/nginx/conf.d/global/fastcgi.conf;
    }
}

Поскольку, как указывает Алексей, fastcgi не передается по наследству, я должен снова поместить его в папку _server.php $. Благодаря включению он тоже неплохо наводит порядок. Теперь php хорошо разбирается.

(Тот факт, что auth_basic полностью отключен для этого файла, на самом деле не предназначен, но это рассматривается в другом вопросе. Просто упомяну об этом на случай, если кто-то найдет это ...)

Еще раз спасибо, Алексей.