Nginx, PHP-FPM с 2 приложениями во вложенных файлах

У меня 2 приложения в 2 разных папках. Я хочу использовать корневую папку для всего, кроме случаев, когда в URL-адресе есть / SOMENAME в качестве папки, в таком случае я хочу указать на эту папку.

Я пробовал несколько блоков местоположения / псевдонима, но ни один из них не работал ( расположение было правильным, но файлы php обслуживали не только статический контент) ... см. мою конфигурацию ниже.

server {
    listen 80;
    #disable_symlinks off;
    server_name join.mydomain.com; #allow few domains
    root /www/main;

    #removing the 'index.php'
    location / {
            if (!-e $request_filename){
                rewrite ^(.*)$ /index.php;
            }
            index index.html index.php;
    }

    location /SOMENAME/ {
            root /www/somename;
    }

    #######################
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass        unix:/var/run/php5-fpm.sock;
        include             fastcgi_params;
        fastcgi_param       PATH_INFO $fastcgi_script_name;
        fastcgi_param HTTPS on;
        fastcgi_index       index.php;
        fastcgi_param       SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}
1
задан 5 September 2016 в 23:17
1 ответ

У вас есть два приложения PHP, размещенных в разных корнях документов, а это значит, что вам нужно два блока location ~ \ .php $ . Предполагая, что SOMENAME и somename на самом деле одинаковы, вы можете использовать что-то вроде этого:

root /www/main;
index index.html index.php;

location / {
    try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass  unix:/var/run/php5-fpm.sock;
    include       fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $request_filename;
}

location ^~ /somename {
    root /www;
    try_files $uri $uri/ /somename/index.php;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass  unix:/var/run/php5-fpm.sock;
        include       fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $request_filename;
    }
}

Модификатор ^ ~ в месте ], сделайте так, чтобы это местоположение префикса имело приоритет над блоком местоположения регулярного выражения над ним, чтобы скрипты PHP обрабатывались правильным блоком местоположения. Подробнее см. этот документ .

Директива try_files задокументирована здесь .

1
ответ дан 3 December 2019 в 23:41

Теги

Похожие вопросы