![nginx 配置中两个站点位于同一个 IP 上](https://linux22.com/image/725267/nginx%20%E9%85%8D%E7%BD%AE%E4%B8%AD%E4%B8%A4%E4%B8%AA%E7%AB%99%E7%82%B9%E4%BD%8D%E4%BA%8E%E5%90%8C%E4%B8%80%E4%B8%AA%20IP%20%E4%B8%8A.png)
我有服务器和 IP 地址,但没有域名。我需要将两个项目放在同一个 IP 地址上,一个是 /api,另一个是 /front。
所以它应该像 123.123.123.123/api, 123.123.123.123/front
这是我尝试但没有成功的事情(当我访问 /front 时它显示“欢迎使用 nginx”而当我访问 /api 时显示 404):
server {
listen 80 default_server;
listen [::]:80 default_server;
index index.php index.html index.htm index.nginx-debian.html;
location /api {
root /var/www/api/pubic;
try_files $uri $uri/ /index.php?$query_string;
}
location ~ /api/.+\.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
}
location /front {
root /var/www/front/dist;
try_files $uri $uri/ /index.html;
}
}
我很确定这很明显,但是我不太了解 nginx 配置,只是尝试了一个来自 SO 的示例。
如果有必要的话,我会使用 Laravel 作为 /api,使用 VueJS 作为 /front。
答案1
您的问题很可能出root
在您的配置中的指令上。
location /api {
root /var/www/api/pubic;
try_files $uri $uri/ /index.php?$query_string;
}
在这里,当您尝试加载http://123.123.123.123/api,nginx 会加载/var/www/api/pubic/api/index.php
。也就是说,nginx在查找资源时会将location
指令中的目录附加到 。root
如果要加载/var/www/api/pubic/index.php
,则需要使用alias /var/www/api/pubic
。