WordPress, Laravel и NGINX

Я пытаюсь заставить конфигурацию NGINX работать с WordPress по умолчанию, например domain.com, а приложение Laravel — domain.com/app.

Я не против того, чтобы это был поддомен, но я хотел сначала попробовать это. Я не уверен, что проще/лучше.

Каталоги: WP - /var/www/wordpress L5 - /var/www/laravel

server {
        client_max_body_size 10M;
        listen 80 default_server;
        listen [::]:80 default_server;

        # SSL configuration
        #
        # listen 443 ssl default_server;
        # listen [::]:443 ssl default_server;
        #
        # Note: You should disable gzip for SSL traffic.
        # See: https://bugs.debian.org/773332
        #
        # Read up on ssl_ciphers to ensure a secure configuration.
        # See: https://bugs.debian.org/765782
        #
        # Self signed certs generated by the ssl-cert package
        # Don't use them in a production server!
        #
        # include snippets/snakeoil.conf;

        root /var/www/wordpress;

        # Add index.php to the list if you are using PHP
        index index.php index.html index.htm index.nginx-debian.html;

        server_name somename;

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

        location = /robots.txt {
                log_not_found off;
                access_log off;
                allow all;
        }

        location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
                expires max;
                log_not_found off;
        }

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

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

        location /app/ {
                alias /var/www/laravel/public;

                try_files $uri $uri/ /app//app/index.php?$query_string;

                location ~ /app/.+\.php$ {
                        include snippets/fastcgi-php.conf;
                        fastcgi_pass unix:/run/php/php7.0-fpm.sock;

                }

        }

        location ~ /\.ht {
                deny all;
        }

}

person Community    schedule 24.07.2017    source источник
comment
Что происходит, когда вы перемещаете блок location /app/ вверх (над блоком location /)   -  person milo526    schedule 24.07.2017
comment
@ milo526 milo526 ничего не произойдет, так как они оба являются префиксами.   -  person Richard Smith    schedule 25.07.2017


Ответы (1)


Я не могу подтвердить, что это сработает, так как я не знаю Laravel. Двум приложениям PHP без общего корня потребуются два местоположения PHP (которые у вас есть). Однако оператор location /app/ должен использовать модификатор ^~, чтобы предотвратить выбор неправильного местоположения PHP. Подробнее см. в этом документе.

location ^~ /app/ {
    alias /var/www/laravel/public/;

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

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

        include snippets/fastcgi-php.conf;

        fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }
}

Я вижу, что ваш вопрос включает исправление ошибки alias/try_files, но я предпочитаю решение с блоком if выше.

person Richard Smith    schedule 25.07.2017
comment
Вот чего мне не хватало. Спасибо! - person ; 27.07.2017