设置nginx以基于url提供静态html网页

时间:2016-01-20 16:09:36

标签: nginx

我想根据网址用户输入不同的网站。 例如,如果用户将转到

my-domain.pl/内容将从桌面文件夹

提供

my-domain.pl/desktop内容将从桌面文件夹

提供

my-domain.pl/mobile内容将从移动文件夹

提供
 root
  |
  |---mobile
  |      |--- assets
  |              |---js,css,img
  |      
  |---desktop
         |--- assets
                 |---js,css,img

我在nginx设置文件中尝试过:

 server {

    root /desktop

    location /mobile {
        root /mobile
    }    

    location /desktop{
        root /desktop
    }    

 }

但它仅适用于/路径,其余路径返回404

我尝试添加try_files $uri index.html,但似乎它会为此位置的所有请求返回index.html文件,例如它返回index.html文件而不是javascript。

我在设置nginx时非常新,所以任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

您需要使用alias指令而不是root:请参阅documentation

server {

    root /;

    location /desktop {
    }    

    location /mobile {
        alias /mobile;
    }    
 }

(不要忘记尾随分号)

答案 1 :(得分:1)

您应该避免在root块内指定location(参见nginx pitfalls)。

您是否尝试过以下操作:

  • 只有一个root
  • 默认情况下使用rewrite投放/desktop

配置看起来像:

server {

  root /;

  ## this should take care of the redirect to /desktop by default:
  location = / {
    rewrite ^ /desktop/ redirect;
  }
  ## this one below probably doesn't work:
  # rewrite ^/$ /desktop/;

}

P.S。我现在无法访问带有nginx的计算机,因此我无法检查rewrite语法。另请参阅this answer