use subdirectories instead of subdomains

Jim Ohlstein jim at ohlste.in
Fri Apr 25 18:17:33 UTC 2014


Hello,

On 4/25/14, 1:17 PM, Thuban wrote:
>>>      root /var/www/mysite;
>>>      location /owncloud {
>>>          alias /var/www/mysite/owncloud;
>>>          include /etc/nginx/conf.d/owncloud.conf;
>>>          }
>>>
>>> , but services like owncloud need `location` rules too, so I finally
>>> have "location /example is outside location" errors.
>>>
>>> How can I configure nginx for this?
>>
>> Why are you using an alias here? If the root is /var/www/mysite then
>>
>> location /owncloud
>>
>> would be interpreted as /var/www/mysite/owncloud which I'm guessing
>> is what you want.
>
> Because the owncloud.conf contains `location` rules like this :
>
>      location = /robots.txt {
>              allow all;
>              log_not_found off;
>              access_log off;
>          }
>          location / {
>                  # The following 2 rules are only needed with webfinger
>                  rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
>                  rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
>
>                  rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
>                  rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
>
>                  rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
>
>                  try_files $uri $uri/ index.php;
>          }
>
>      # deny direct access
>      location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
>          deny all;
>      }
>
>      # enable php
>          location ~ ^(.+?\.php)(/.*)?$ {
>          try_files $1 = 404;
>          include fastcgi_params;
>          fastcgi_param SCRIPT_FILENAME $document_root$1;
>          fastcgi_param PATH_INFO $2;
>          fastcgi_param HTTPS on;
>          fastcgi_pass unix:/var/run/php5-fpm.sock;
>
>      }
>

I'm still not sure you've actually given a reason why you need an alias.

Those rules appear to be more or less a direct copy of the rules which 
are at 
http://doc.owncloud.org/server/5.0/admin_manual/installation/installation_others.html. 
In my personal experience, they work perfectly well on ownCloud 6. 
You're almost certainly seeing "outside location" errors because of 
issues with the root path or because of the way you have written the 
included file.

I'd suggest following the exact instructions in the above link without 
an included file and *without* an unnecessary alias.

If they don't work, try rewriting them without nested locations. Use the 
full path for each location. Read the docs at 
http://nginx.org/en/docs/http/ngx_http_core_module.html#location to 
understand how locations are matched and this entire problem will be 
much easier to understand.

If you can get them working without nested locations, you can nest some 
if you want, but consider reading this thread about nested locations: 
http://forum.nginx.org/read.php?2,174517,174517.

-- 
Jim Ohlstein


"Never argue with a fool, onlookers may not be able to tell the 
difference." - Mark Twain



More information about the nginx mailing list