我有一个位于 的 wordpress 网站/var/www/example.com/sites/public
。我希望可以通过 访问此 wordpress 网站example.com/_api
。我该怎么做?这是我目前的配置:
server {
listen 80;
server_name example.com;
root /var/www/example.com/site/public;
location /_api/ {
index index.php;
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_intercept_errors on;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
如果我访问 ,我会得到 403 错误example.com
,这是有道理的,因为没有 root 的索引文件。但是如果我转到example.com/_api
或example.com/_api/index.php
,我会得到 404 错误。这个配置有什么问题?nginx 在这个配置中搜索未找到的哪个目录index.php
?
答案1
我只需要使用 proxy_pass 指令。像这样
location /_api/ {
proxy_pass http://www.example.com/whatever
}
或者,你可以将 Wordpress 移动到 _api 目录,然后按如下方式配置
try_files $uri $uri/ /blog/index.php?$args;
可能有十几种不同的方法可以做到这一点,有人可能会想出更好的方法。