簡體   English   中英

在Nginx上使用別名的Owncloud

[英]Owncloud with an Alias on Nginx

我的Nginx配置有問題,我們當前的根目錄中有Wordpress,我想通過使用根目錄之外的目錄在/ owncloud上設置owncloud。 我試圖在nginx中設置別名,但是我不確定從nginx或php獲得“訪問被拒絕”。 我的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)首先,檢查

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)為什么在location /owncloud中使用fastcgi_split_path_info 此位置不會阻止其他正則表達式匹配(請使用location ^~ …避免它),因此php腳本不會到達該location ~ ^(.+?\\.php)(/.*)?$ ,它將在location ~ ^(.+?\\.php)(/.*)?$進行匹配location ~ ^(.+?\\.php)(/.*)?$順便說一下,下面的location ~ ^(.+?\\.php)(/.*)?$似乎沒有fastcgi_split_path_info

不能再說了,對不起,我只是在家用PC上使用owncloud

PS)我建議您使用include指令將一個大型配置拆分為多個小型配置,以提高可讀性……

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM