nginx Рассматривает путь пользовательского интерфейса Swagger к индексу. html как путь к маршруту. - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть два проекта, оба используют одинаковую конфигурацию nginx, единственное отличие - это имя хоста и путь к веб-каталогу:

server {
    listen 80;
    server_name {project_host};

    root /var/www/{project_path}/web;

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_log /var/log/nginx/{project_name}_error.log;
    access_log /var/log/nginx/{project_name}_access.log;

    error_page 404 /index.php;

    sendfile off;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_index index.php;
    }

    location ~ /\.ht {
        deny all;
    }
}

оба в каталоге web имеют папку docs, в которой есть все swagger-ui файлы с index.html.

Все отлично работает для первого проекта, я могу получить доступ к Swagger UI, используя URL prject1/docs/index.html, но в случае проекта 2, когда я иду на project2/docs/index.html, я получаю мою страницу не найден, которая должна будет отображаться php, когда маршрут не найден. Почему в случае приложения 1 nginx понимают, что /docs/index.html не является маршрутом, а в случае приложения 2 он рассматривает его как маршрут, а не путь к файлу, если конфигурации совпадают

My web dir структура (идентична для обоих проектов):

web/ 
    index.php
    docs/
         index.html
          other_swagger_ui_files

Может быть, это также будет полезно, оба проекта являются своего рода микросервисами, и локально у меня есть docker -компонованная конфигурация для их запуска и запуска, поэтому они оба находятся в одной сети и используют один и тот же контейнер Nginx -proxy и совместно используют один и тот же контейнер PHP, но каждый из них имеет собственный контейнер Nginx (но, как я уже говорил, они идентичны и имеют одинаковую конфигурацию)

...