使用 nginx 设置多站点

Setting up multisite with nginx

使用 nginx 设置以下设置时遇到一些问题:

这些是 laravel 个站点,gb/en 是将添加的第一个站点。 Root 可以正常工作,但我无法让 /gb/en 指向 /gb/en/public 文件夹。

我已经尝试了很多东西,但这是我当前的配置文件:

server {
    listen 80;
    listen [::]:80;
    server_name www.example.com;
    root /home/forge/www.example.com/public;

    ssl_protocols TLSv1.2;
    ssl_ciphers TEST;
    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;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location /gb/en {
        root /home/forge/www.example.com/gb/en/public;
    }

    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/www.example.com-error.log error;

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

你可以在那里看到我的位置块,我已经尝试了多种不同的方法但无济于事。

如有任何帮助,我们将不胜感激。

编辑:

因此,一旦我意识到 url 中的子文件夹也被添加到根目录中,我就更近了一步:

location /gb/en/ {
    root /home/forge/www.example.com/public;
    try_files $uri $uri/ /public/index.php?url=$uri;
}

所以,我的文件在 /public/gb/en/public 下,但上面解析为 /public/gb/en/index.php

如何让 /gb/en/ 解析为 public/gb/en/public/index.php?

非常感谢 ;)

编辑:

我突然想到了这个主意——使用符号链接!我将 /gb/en 符号链接到单独文件夹中的 public 文件夹,效果不错 ;)

我建议将 try_files 行复制到 /en/gb 块中。在该文件夹或站点中,您没有像在有效的文件夹中那样指定要使用的扩展名。

试试这个:

location /gb/en {
    root /home/forge/www.example.com/gb/en/public;
    try_files $uri $uri/ /index.php?$query_string;
}

但是,如果 /en/gb 的内容与站点相关,直接在 Laravel 中设置可能是更好的选择。

最后我使用了符号链接来实现这一点。我将 /gb/en 符号链接到另一个位置的 public 文件夹,它完成了我想要的 ;)

编辑 - 后来我发现子页面也有问题,但后来找到了这个例子,它首先帮助实现了我想要的 https://gist.github.com/noeldiaz/08a1211a7c47f21f7083