Как настроить несколько сайтов с одинаковым URL на Nginx - PullRequest
0 голосов
/ 20 января 2019

Я пытаюсь, чтобы 2 сайта работали по одному адресу,

Я хочу, чтобы все запросы на my.website.com/test_slim и каждый my.website.com/test_slim/anything/following были направлены на /var/www/html/test_slim/src/public/index.php.

Я хочу, чтобы все остальное (my.website.com/, my.website.com/foo, my.website.com/bar/baz ...) служило обычными файлами PHP в /var/www/html/whatever/file/according/to/url/index.php

Теперь, это мои конфигурации сервера:

В /etc/nginx/site-enabled/my-default

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    index index.php index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        fastcgi_index index.php;
        include fastcgi.conf;
    }
}

В /etc/nginx/sites-enabled/test_slim

server {
    listen 80;
    server_name _;
    index index.php;
    error_log /var/www/html/test_slim/error.log;
    access_log /var/www/html/test_slim/access.log;
    root /var/www/html/test_slim/src/public;

    location /test_slim/ {
        try_files $uri /index.php$is_args$args;
    }

    location ~ \.php {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi.conf;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        fastcgi_index index.php;
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    }
}

Но на самом деле я получаю:

  • Запрос localhost/ выполнить /var/www/html/index.html, как хотел.
  • Запрос на localhost/toto выполнить /var/www/html/toto/index.html как и хотел.
  • Запрос на localhost/test_slim загрузок the /var/www/html/test_slim/src/public/index.pxp
  • Запрос по localhost/test_slim/hello возвращает нам страницу с ошибкой Nginx (404, если папка hello не существует, 403, если она существует).
  • Запрос на localhost/test_slim/src/public/ выдать файл /var/www/html/test_slim/src/public/index.php.
...