nginx 配置中两个站点位于同一个 IP 上

nginx 配置中两个站点位于同一个 IP 上

我有服务器和 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

相关内容