динамический doute nginx для проекта laravel используйте первый параметр

#php #laravel #nginx #dynamic #path

Вопрос:

привет, я разработчик laravel. работаю в envato. у меня есть какой-то проект laravel . я хотел бы создать пользовательскую конфигурацию для своих проектов laravel.

пример

  1. http://demo.jubayed.com/demo1/
  2. http://demo.jubayed.com/demo2/
  3. http://demo.jubayed.com/demo3/
  4. http://demo.jubayed.com/demo4/
  5. http://demo.jubayed.com/demo5/

    корень demo.jubayed.com/$Демопроект/

 server {
    listen 80;
    
    server_name demo.jubayed.com;

    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.php;

    charset utf-8;

    location /($demoProject)/ {
        try_files $uri $uri/ /index.php?$query_string;
        root /var/www/$demoProject/public;
    }

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

    error_page 404 /index.php;
   # error_page 500 /index.php;
   # error_page 401 /index.php;
   # error_page 403 /index.php;

    location ~ .php$ {
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
        
    }

    location ~ /.(?!well-known).* {
        deny all;
    }
}
 

Ответ №1:

Возможно, вы захотите использовать alias вместо root того, чтобы, как вам нужно, манипулировать URI для вставки public в путь. Подробности см. в этом документе.

Вам также нужно будет использовать вложенный location для PHP, так как ему нужен доступ к тому же имени пути.

 location ~ ^/(?<project>[^/] )/(?<suffix>.*)$ {
    alias /var/www/$project/public/$suffix;

    if (!-e $request_filename) { rewrite ^ /$project/index.php last; }

    location ~ .php$ {
        if (!-f $request_filename) { return 404; }

        include fastcgi_params;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $request_filename;
    }
}
 

Я избегаю использования try_files и alias в одном блоке из-за долгосрочных проблем. См .Это предупреждение об использовании if .