Я пытаюсь установить 2 приложения Symfony 4 в одном блоке сервера (в том же домене), но php не отображает файлы php. Вот мой конфиг:
server {
server_name mydomain.com;
root /var/www/;
location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ {
access_log off;
expires max;
}
location ~ ^/app1(/.*)$ {
alias /home/app1/html/public;
try_files $uri /index.php$is_args$args;
location ~ ^/index\.php(/|$) {
fastcgi_pass php_stream;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
}
}
location ~ ^/app2(/.*)$ {
alias /home/app2/html/public/;
try_files $uri /index.php$is_args$args;
location ~ ^/index\.php(/|$) {
fastcgi_pass php_stream;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params_;
fastcgi_param SCRIPT_FILENAME $realpath_root$request_filename;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
}
location / {
root /var/www/;
}
}
Если я помещаю статические файлы в папку приложения, он работает, но не с файлами php. он следит за файлами php в корневой папке /var/www/index.php, а не за общедоступной папкой приложения. Как будто директива alias не учитывает.
Кто-нибудь знает, как это исправить?
Кажется, моя проблема связана с ошибкой в nginx (относительно использования псевдонима и try_file в одном блоке). эта ошибка существует более 6 лет и не может быть исправлена, чтобы избежать побочного эффекта (если я хорошо понимаю). Вот способ, который действительно работает:
upstream app1.fake {
server 127.0.0.1;
}
upstream app2.fake {
server 127.0.0.1;
}
upstream app1_stream {
server unix:/var/run/php-fpm-app1.sock1 weight=100 max_fails=5 fail_timeout=5;
server unix:/var/run/php-fpm-app1.sock2 weight=100 max_fails=5 fail_timeout=5;
}
upstream app2_stream {
server unix:/var/run/php-fpm-app2.sock1 weight=100 max_fails=5 fail_timeout=5;
server unix:/var/run/php-fpm-app2.sock2 weight=100 max_fails=5 fail_timeout=5;
}
server {
server_name mydomain;
listen 80;
root /var/www/;
index index.html;
location /app1 {
proxy_pass http://app1.fake;
}
location /app2 {
proxy_pass http://app2.fake;
}
}
server {
server_name app1.fake;
root /home/app1/html/public;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ ^/index\.php(/|$) {
fastcgi_pass app1_stream;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
}
server {
server_name app2.fake;
root /home/app2/html/public;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ ^/index\.php(/|$) {
fastcgi_pass app2_stream;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
}
"Если псевдоним используется внутри местоположения, определенного с помощью регулярного выражения, такое регулярное выражение должно содержать записи, а псевдоним должен ссылаться на эти записи (0.7.40), например:
location ~ ^/users/(.+\.(?:gif|jpe?g|png))$ {
alias /data/w3/images/$1;
}
" Видеть http://nginx.org/en/docs/http/ngx_http_core_module.html#alias