我在同一域中设置了两个项目,第一个项目是前端的ReactJS项目,第二个是symfony中的API项目。
我需要配置nginx的虚拟主机,以便我的域www.example.com转到我的reactjs项目,而www.example.com/api转到我的symfony项目。
其他路由器示例www.example.com/register或www.example.com/login必须转到reactjs项目,而www.example.com/api/*中的子文件夹转到我的symfonys项目。
我使用Ubuntu 16.04。我已经尝试了下一个配置
server {
listen 80;
server_name example.com www.example.com;
location /api {
root /var/www/symfony/public;
try_files $uri /index.php$is_args$args;
}
location / {
root /var/www/reactjs/build;
index index.html index.htm index.nginx-debian.html;
try_files $uri /index.html;
}
location ~* \.(eot|ttf|woff|woff2)$ {
add_header Access-Control-Allow-Origin *;
}
error_log /var/log/nginx/Inno_FRT__error.log;
access_log /var/log/nginx/Inno_FRT__access.log;
}
但这不起作用。
我尝试了上述方法的许多不同变体,但没有成功。
任何帮助将不胜感激。
答案 0 :(得分:0)
如果您在root /var/www/symfony/public;
中有location /api
,它将在root /var/www/symfony/public/api
中查找。您可能需要alias。试试这个:
location /api/ {
alias /var/www/symfony/public;
try_files $uri /index.php$is_args$args;
}
有关为什么这样做的必要说明,请参见this answer。
此外,您可能需要location /api/
,而不是location /api
。 Nginx会进行前缀匹配,因此location /api
将匹配/apifoobar
。