2014-01-05 4 views
1

У меня проблема с нашей конфигурацией Nginx. У нас есть Wordpress в нашем корневом каталоге, и я хотел бы настроить owncloud on/owncloud, используя каталог за пределами нашего корня. Я попытался установить псевдоним в nginx, но я получаю «отказ в доступе» от nginx или php i'am не уверен. Мой Nginx конфигурации:Owncloud с псевдонимом Nginx

server { 
    listen 134.34.60.101:80; ## listen for ipv4; this line is default and implied 
    # listen [::]:80 default ipv6only=on; ## listen for ipv6 
    listen 134.34.60.101:443 default ssl; 
    server_name fachschaft.inf.uni-konstanz.de www.fachschaft.inf.uni-konstanz.de; 
    #root /usr/share/nginx/www; 
    root /srv/www/website/current; 
    index index.php; 
    # reroute to old svn for now - Sammy 2013-11-26 
    rewrite ^/svn/fachschaft(/.*)$ https://134.34.58.21/svn/fachschaft$1; 

    ssl_certificate  ssl/chained-nginx.crt; 
    ssl_certificate_key ssl/key-no-pw.pem; 
    ssl_session_timeout 5m; 
    ssl_protocols  SSLv3 TLSv1 TLSv1.1 TLSv1.2;   
    ssl_ciphers HIGH:!aNULL:!MD5; 
     ssl_prefer_server_ciphers on; 
    if ($ssl_protocol = "") { 
     rewrite^https://www.fachschaft.inf.uni-konstanz.de$request_uri? redirect; 
    } 
     #Owncloudsettings: 
     client_max_body_size 256M; # set max upload size 
     fastcgi_buffers 64 4K; 
     rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect; 
     rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect; 
     rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;  


    location = /favicon.ico { 
     log_not_found off; 
     access_log off; 
    } 
    location = /robots.txt { 
     allow all; 
     log_not_found off; 
     access_log off; 
    } 


    location/{ 
     try_files $uri $uri/ /index.php?$args; 

    } 
    location /doc/ { 
     alias /usr/share/doc/; 
     autoindex on; 
     allow 127.0.0.1; 
     deny all; 
    } 
    location ~ /adminier { 
     # TODO find a better solution... 
     alias /srv/www/adminier/index.php; 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 

       fastcgi_pass unix:/var/run/php5-fpm.sock; 
       fastcgi_index index.php; 
       include fastcgi_params; 
    } 

     location /owncloud { 
     alias /srv/www/owncloud; 

     try_files $uri $uri/ /index.php?$args; 
#  fastcgi_split_path_info ^(/owncloud/.+\.php)(/.+)$; 
     fastcgi_split_path_info ^/owncloud/(.+\.php)(/.+)$; 

       fastcgi_pass unix:/var/run/php5-fpm.sock; 
       fastcgi_index index.php; 
       include fastcgi_params; 

      #Owncloud: 
      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; 

location ~ ^/owncloud/(data|config|\.ht|db_structure\.xml|README) { 
       deny all; 
} 

    } 



    #error_page 404 /404.html; 

    # redirect server error pages to the static page /50x.html 
    # 
    #error_page 500 502 503 504 /50x.html; 
    #location = /50x.html { 
    # root /usr/share/nginx/www; 
    #} 

    # Roots Wordpress Theme Rewrites 
    # See http://roots.io/roots-101/ 
    location ~ ^/assets/(img|js|css|fonts)/(.*)$ { 
    try_files $uri $uri/ /content/themes/fsinf-v2/assets/$1/$2; 
    } 
    location ~ ^/plugins/(.*)$ { 
     try_files $uri $uri/ /content/plugins/$1; 
    } 
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 
    # 
    #location ~ \.php$ { 
     #fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini 

     # With php5-cgi alone: 
     # fastcgi_pass 127.0.0.1:9000; 
     # With php5-fpm: 
     #fastcgi_pass unix:/var/run/php5-fpm.sock; 
     #fastcgi_index index.php; 
     include fastcgi_params; 
    #} 

     location ~ ^(.+?\.php)(/.*)?$ { 
      try_files $1 = 404; 

      include fastcgi_params; 
      fastcgi_param SCRIPT_FILENAME $document_root$1; 
      fastcgi_param PATH_INFO $2; 
      fastcgi_param htaccessWorking true; 
      fastcgi_pass unix:/var/run/php5-fpm.sock; 
     } 

    # deny access to .htaccess files, if Apache's document root 
    # concurs with nginx's one 
    # 
# location ~ /\.ht { 
#  deny all; 

#} 

location ~ ^/owncloud/(data|config|\.ht|db_structure\.xml|README) { 
       deny all; 
} 
} 

Кто-нибудь идея, как это будет работать?

ответ

1

1) Прежде всего, проверьте

fastcgi_split_path_info ^/owncloud/(.+\.php)(/.+)$; 

Я думаю, вы должны использовать (. + ? .php) здесь, ? позволит правильно работать с *.php файлом в качестве пользовательских данных (я вижу тебя используйте его выше). Кстати, создать info.php с

<?php 
phpinfo(); 
?> 

Загрузить его к вам сервер и попробуйте загрузить его с owncloud/remote.php/webdav/SOME_FOLDER/info.php, его необходимо начать загрузку, не выполняется.

2) Убедитесь, что параметр FastCGI PATH_INFO установлен правильно (с помощью этого info.php файла), если нет, то попробуйте использовать

set   $path_info $fastcgi_path_info; 
fastcgi_param PATH_INFO $path_info; 

Не спрашивайте меня, почему он установлен таким странным образом, там была ошибка , Я не помню, где я нашел это решение ...

3) Почему вы используете fastcgi_split_path_info в location /owncloud? Это место не блокирует дополнительные соответствия регулярных выражений (используйте location ^~ …, чтобы избежать этого), поэтому скрипты php не попадут туда, это будет соответствовать location ~ ^(.+?\.php)(/.*)?$ ниже, что, кстати, похоже, не имеет fastcgi_split_path_info.

Не могу сказать больше, извините, я просто используя OwnCloud для моего домашнего компьютера

PS) Я рекомендую использовать include директиву, чтобы разделить один большой конфигурации в нескольких небольших конфигов для повышения читаемости ...

Смежные вопросы