Nginx新手在这里。
我控制域eample.com
,目标是在以下URL上提供三种不同的资源:
-
example.com
-静态目标网页 -
example.com/siteA
-PHP应用程序A -
example.com/siteB
-PHP应用程序B
我磁盘上的文件结构大致如下:
/var/www
├── html
│ └── index.html
├── siteA
│ └── index.php
└── siteB
└── public
└── index.php
我有以下(简化的)Nginx配置
server {
root /var/www/html;
index index.php index.html;
server_name example.com;
# Site A
location /siteA {
#root /var/www/siteA;
alias /var/www/siteA/;
include snippets/fastcgi-php.conf;
}
# Site B
location /siteB/ {
#root /var/www/siteB/public;
alias /var/www/siteB/public/;
include snippets/fastcgi-php.conf;
}
}
包含的文件snippets/fastcgi-php.conf
包含以下内容:
location ~ \.php$ {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
try_files $fastcgi_script_name =404;
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
fastcgi_index index.php;
include fastcgi.conf;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
}
位于example.com
的静态着陆页有效,但是尝试访问example.com/siteA
会导致Primary script unknown
错误。
PHP-FPM
池访问日志包含以下行:
- - 12/Nov/2019:15:57:03 +0200 "GET /siteA/index.php" 404
我相信PHP-FPM试图打开的实际文件路径是/var/www/html/siteA/index.php
,这显然是错误的。
我很确定自己搞砸了与root
和/或alias
指令相关的内容,但是我对此不太了解。
如何在不更改磁盘文件结构的情况下修复我的配置?
任何指针都会受到赞赏。