У меня есть такая конфигурация nginx:
server {
listen 80;
listen [::]:80;
root /var/www/pics;
index index.html index.htm index.nginx-debian.html index.php;
server_name photos.test.com;
location /storage/raw/ {
return 418;
}
#error_page 404 /index.html;
location ^~ /api {
client_max_body_size 500M;
try_files $uri.php$is_args$query_string $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location / {
try_files $uri $uri/ /index.html =404;
tcp_nodelay off;
open_file_cache max=3000 inactive=120s;
open_file_cache_valid 45s;
open_file_cache_min_uses 2;
open_file_cache_errors off;
}
location = /index.html {
expires 30s;
}
}
Мне нужны все запросы, которые находятся в каталоге api (https://photos.test.com/api/*) для отправки на php для обработки. У меня есть каталог для хранения моих фотографий, и он ограничен как таковой. Если запрос относится к несуществующему файлу, он должен получить ответ 200 и вернуть содержимое index.html. Я использую nuxt generate
для создания моих файлов, но у меня есть динамические маршруты, и я не хочу иметь отдельный процесс только для их обработки - поэтому, если он не может его найти, он просто переходит к index.html.
Все работает нормально ... но если я попытаюсь добавить строку запроса к любому запросу в моем API ... это просто 404: Работает: http://photo.test.com/api/albums/list Не работает: http://photo.test.com/api/albums/list?filter=1
У меня нет идей. я использовал add_header
в моем блоке местоположения / api, чтобы проверить, попал ли он в блок - без строки запроса он проходит нормально, и появляется мой тестовый заголовок. В строке запроса мой заголовок отладки отсутствует.
Мой вывод nginx -V:
nginx version: nginx/1.18.0
built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12)
built with OpenSSL 1.1.1g 21 Apr 2020
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --user=nginx --group=nginx --with-cc-opt=-Wno-deprecated-declarations --with-cc-opt=-Wno-ignored-qualifiers --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_mp4_module --with-http_auth_request_module --with-http_slice_module --with-http_stub_status_module --with-http_realip_module --with-http_sub_module --add-module=/usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable --add-module=/usr/local/src/nginx/modules/ngx_brotli --add-module=/usr/local/src/nginx/modules/headers-more-nginx-module-0.33 --add-module=/usr/local/src/nginx/modules/ngx_cache_purge --with-http_dav_module --add-module=/usr/local/src/nginx/modules/nginx-dav-ext-module```