Настройка rutorrent и owncloud на nginx

Я искал во всей сети, но, по-видимому, никто не опубликовал конфигурацию, которую я ищу. В настоящее время я тестирую на виртуальной машине то, что я хотел бы использовать в качестве конфигурации своего сервера, 3 приложения, которые я установлю, — это rutorrent, веб-интерфейс для rtorrent, owncloud и plex, 2 из них настроены с помощью nginx, но почему-то моя конфигурация не не работает. Я создал 2 виртуальных сервера, один с именем rutorrent, другой owncloud, моя идея заключалась в том, чтобы получить к ним доступ с помощью serverip/rutorrent и serverip/owncloud, разделив 2. Я на Ubuntu 14.04, мои папки rutorrent и owncloud находятся в /var/www, мой версия php 5.5.9-1.

Текущая проблема в том, что конфиг rutorrent работает, если включен только он один, но не работает, если включен и owncloud, более того, сам по себе owncloud не работает. Со стандартной конфигурацией owncloud из их руководства owncloud работает, но rutorrent возвращает file not foundpage.

Вот файлы моего сервера из /etc/nginx/sites-available, которые я связал с каталогом enabled:

upstream php-handler {
    #server 127.0.0.1:9000;
    server unix:/var/run/php5-fpm.sock;
}

server {
    listen 80;
    server_name 192.168.61.128;
    return 301 https://$server_name$request_uri;  # enforce https
}

server {
    listen 443;
    server_name 192.168.61.128;

    ssl on;
    ssl_certificate /srv/ssl/nginx.crt;
    ssl_certificate_key /srv/ssl/nginx.key;

    # Path to the root of your installation
    root /var/www;

    client_max_body_size 10G; # set max upload size
    fastcgi_buffers 64 4K;

    index index.php;
    error_page 403 /core/templates/403.php;
    error_page 404 /core/templates/404.php;

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

    location /owncloud/ {
        alias /var/www/owncloud/;
        location ~ ^/owncloud/(?:\.htaccess|data|config|db_structure\.xml|README) {
                deny all;
        }

        rewrite ^/owncloud/caldav(.*)$ /owncloud/remote.php/caldav$1 redirect;
        rewrite ^/owncloud/carddav(.*)$ /owncloud/remote.php/carddav$1 redirect;
        rewrite ^/owncloud/webdav(.*)$ /owncloud/remote.php/webdav$1 redirect;

        rewrite ^/owncloud/.well-known/host-meta /owncloud/public.php?service=host-meta last;
        rewrite ^/owncloud/.well-known/host-meta.json /owncloud/public.php?service=host-meta-json last;

        rewrite ^/owncloud/.well-known/carddav /owncloud/remote.php/carddav/ redirect;
        rewrite ^/owncloud/.well-known/caldav /owncloud/remote.php/caldav/ redirect;

        rewrite ^/owncloud/apps/([^/]*)/(.*\.(css|php))$ /owncloud/index.php?app=$1&getfile=$2 last;
        rewrite ^(/owncloud/core/doc/[^\/]+/)$ $1/index.html;

        try_files $uri $uri/ index.php;

        location ~ ^/owncloud/(.+?\.php)(?:$|/) {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            set $path_info $fastcgi_path_info;
            try_files $fastcgi_script_name =404;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            #fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param PATH_INFO $path_info;
            fastcgi_param HTTPS on;
            fastcgi_param SCRIPT_NAME /owncloud/Â$fastcgi_script_name;
            fastcgi_pass php-handler;
        }
}

    # Optional: set long EXPIRES header on static assets
    location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
            expires 30d;
            # Optional: Don't log access to assets
            access_log off;
    }
}

Это максимально близко к официальной конфигурации owncloud, но при загрузке страницы я получаю ошибку 404. Конфигурация rutorrent выглядит следующим образом, она имеет как обычную конфигурацию, так и конфигурацию ssl, потому что я пытался изменить что-то на обычном, не касаясь работающего ssl:

server {
    listen 80;
    server_name 192.168.61.128;

    root /var/www;
    index index.php index.html index.htm;  

    #location / {
    #   try_files $uri $uri/ =404;
    #}

    location /rutorrent {
        auth_basic "rutorrent";
        auth_basic_user_file /var/www/rutorrent/.htpasswd;
    }

    location /RPC2 {
        include scgi_params;
        scgi_pass localhost:5000;
    }

    location ~ \.php$ {  
        fastcgi_split_path_info ^(.+\.php)(.*)$;  
        fastcgi_pass   unix:/var/run/php5-fpm.sock;  
        fastcgi_index  index.php;
        include fastcgi.conf;
        #fastcgi_intercept_errors        on;  
        #fastcgi_ignore_client_abort     off;  
        #fastcgi_connect_timeout 60;  
        #fastcgi_send_timeout 180;  
        #fastcgi_read_timeout 180;  
        #fastcgi_buffer_size 128k;  
        #fastcgi_buffers 4 256k;  
        #fastcgi_busy_buffers_size 256k;  
        #fastcgi_temp_file_write_size 256k;  
    }

    location ~ /\.ht {  
        deny  all;  
    }
}

server {
    listen 443;
    server_name 192.168.61.128;

    root /var/www;
    index index.php index.html index.htm;

    ssl on;
    ssl_certificate     /srv/ssl/nginx.crt; #server.crt
    ssl_certificate_key /srv/ssl/nginx.key; #server.key

    ssl_session_timeout 5m;

    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
    ssl_prefer_server_ciphers on;

    location / {
        #try_files $uri $uri/ =404;
    }

    location /rutorrent {
        auth_basic "rutorrent";
        auth_basic_user_file /var/www/rutorrent/.htpasswd;
    }

    location ~  \.php$ {  
        fastcgi_split_path_info ^(.+\.php)(.*)$;  
        fastcgi_pass unix:/var/run/php5-fpm.sock;  
        fastcgi_index index.php;
        include fastcgi.conf;
        #fastcgi_intercept_errors on;  
        #fastcgi_ignore_client_abort off;  
        #fastcgi_connect_timeout 60;  
        #fastcgi_send_timeout 180;  
        #fastcgi_read_timeout 180;  
        #fastcgi_buffer_size 128k;  
        #fastcgi_buffers 4 256k;  
        #fastcgi_busy_buffers_size 256k;  
        #fastcgi_temp_file_write_size 256k;  
    }

    location /RPC2 {
        include scgi_params;
        scgi_pass localhost:5000;
    }

    location ~ /\.ht {  
        deny  all;  
    }
}

И, наконец, мой nginx.conf, который опять же максимально приближен к стандарту.

user www-data;
    worker_processes 4;
    pid /run/nginx.pid;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log info;

    ##
    # Gzip Settings
    ##

    gzip on;
    gzip_disable "msie6";

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # nginx-naxsi config
    ##
    # Uncomment it if you installed nginx-naxsi
    ##

    #include /etc/nginx/naxsi_core.rules;

    ##
    # nginx-passenger config
    ##
    # Uncomment it if you installed nginx-passenger
    ##

    #passenger_root /usr;
    #passenger_ruby /usr/bin/ruby;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

Я довольно плохо разбираюсь в этом, но интуитивно это не должно быть так сложно. Спасибо за помощь.


person devster    schedule 25.09.2014    source источник


Ответы (2)


В этой конфигурации многое можно улучшить, но ваша основная проблема заключается в том, чтобы определить два блока сервера с одинаковым именем server_name. Они не будут объединены, если вы этого ожидаете, но один выбран, а другой нет.

person Melvyn    schedule 26.09.2014

Вы совершенно правы, я изменил конфигурацию, поместив оба местоположения в один и тот же виртуальный хост, это рабочий результат, опять же в основном адаптированный из руководства OwnCloud.

upstream php-handler {
    #server 127.0.0.1:9000;
    server unix:/var/run/php5-fpm.sock;
}

server {
    listen 80;
    server_name 192.168.61.128;
    return 301 https://$server_name$request_uri;  # enforce https
}

server {
    listen 443;
    server_name 192.168.61.128;

    root /var/www;
    index index.php index.html index.htm;

    ssl on;
    ssl_certificate     /srv/ssl/nginx.crt; #server.crt
    ssl_certificate_key /srv/ssl/nginx.key; #server.key

    rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
    rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
    rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;

    client_max_body_size 10G; # set max upload size
    fastcgi_buffers 64 4K;

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

    location / {
        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;        
    }

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

    location ~  \.php(?:$|/) {
        fastcgi_split_path_info ^(.+\.php)(.*)$; 
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;  
        fastcgi_param HTTPS on;;
        fastcgi_pass php-handler;
    }

    location /rutorrent {
        auth_basic "rutorrent";
        auth_basic_user_file /var/www/rutorrent/.htpasswd;
    }

    location /RPC2 {
        include scgi_params;
        scgi_pass unix:/home/rtorrent/.sockets/scgi.socket;
    }

    location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
        expires 30d;
        access_log off;
    }
}
person devster    schedule 27.09.2014