我的服务器有一个根目录,/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。
这是我的站点可用文件。
# 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/*;