NginX Nested Location Проблема: выплевывая сырой 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?

1 ответ

Решение

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

    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 полностью отключен в этом файле, на самом деле не предназначен, но об этом говорится в другом вопросе. Просто упомяните об этом на случай, если кто-то найдет это...)

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

Другие вопросы по тегам