Невозможно загрузить файлы PHP из второго каталога сервера
Мой сервер имеет корневой каталог, который /home/forge/example.com/current/ionic/www
и вторичный каталог API PHP, расположенный /home/forge/example.com/current/public
,
Когда пользователь переходит на example.com/api, веб-сайт должен загружаться с /home/forge/example.com/current/public
(который отличается от корня).
Я был в состоянии успешно настроить это с помощью alias
и загрузить index.html
Однако php файлы не загружаются.
На StackExchange я обнаружил, что это связано с давней ошибкой в Nginx.
Я прочитал пару постов, где обходной путь заключается в переписывании URL.
Как использовать псевдоним Nginx для загрузки PHP из другого каталога?
Как я могу обойтись используя псевдоним в nginx?
Вот мой сайт-доступный файл.
# FORGE CONFIG (DO NOT REMOVE!)
include forge-conf/example.com/before/*;
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
root /home/forge/example.com/current/ionic/www;
# location /api {
# alias /home/forge/example.com/current/public;
location /api {
root /home/forge/example.com/current/public;
rewrite ^/api/(.*)$ /$1 break;
try_files $uri /system/index.php?r=$uri;
index index.php;
}
# FORGE SSL (DO NOT REMOVE!)
ssl_certificate /etc/nginx/ssl/example.com/381129/server.crt;
ssl_certificate_key /etc/nginx/ssl/example.com/381129/server.key;
ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/dhparams.pem;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
charset utf-8;
# FORGE CONFIG (DO NOT REMOVE!)
include forge-conf/example.com/server/*;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/example.com-error.log error;
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
# FORGE CONFIG (DO NOT REMOVE!)
include forge-conf/example.com/after/*;