0

在我的 NAS 上,我正在运行 seafile 作为 dropbox/owncloud 的替代方案。我正在使用 nginx 和反向代理来使用/强制 SSL 为 webgui 提供服务。一切正常。

现在,我想为 NAS 上运行的其他东西(沙发土豆、plex 等)设置一些其他位置。这是我的 nginx.conf 文件的相关部分:

server {
    listen 80;
    server_name domain.net, 192.168.1.50;

rewrite ^ https://$http_host$request_uri? permanent;    # force redirect http to https

}



server {
        listen 443;
        ssl on;
        ssl_certificate C:/nginx-1.6.3/conf/ssl/ssl-bundle.crt;        # path to your ssl certificate
        ssl_certificate_key C:/nginx-1.6.3/conf/ssl/server.key;    # path to your private key

        server_name domain.net, 192.168.1.50;

        proxy_set_header X-Forwarded-For $remote_addr;

        add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
        server_tokens off;

    location /couchpotato {
        proxy_pass http://127.0.0.1:5050;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

        location /cloud {
            fastcgi_pass    127.0.0.1:8000;
            fastcgi_param   SCRIPT_FILENAME     $document_root$fastcgi_script_name;
            fastcgi_param   PATH_INFO           $fastcgi_script_name;

            fastcgi_param   SERVER_PROTOCOL        $server_protocol;
            fastcgi_param   QUERY_STRING        $query_string;
            fastcgi_param   REQUEST_METHOD      $request_method;
            fastcgi_param   CONTENT_TYPE        $content_type;
            fastcgi_param   CONTENT_LENGTH      $content_length;
            fastcgi_param   SERVER_ADDR         $server_addr;
            fastcgi_param   SERVER_PORT         $server_port;
            fastcgi_param   SERVER_NAME         $server_name;
            fastcgi_param   HTTPS               on;
            fastcgi_param   HTTP_SCHEME         https;

            access_log      logs/seahub.access.log;
            error_log       logs/seahub.error.log;
        }

        location /seafhttp {
            rewrite ^/seafhttp(.*)$ $1 break;
            proxy_pass http://127.0.0.1:8082;
            client_max_body_size 0;
            proxy_connect_timeout  36000s;
            proxy_read_timeout  36000s;
        }

    location /seafmedia {
            rewrite ^/seafmedia(.*)$ /media$1 break;
            root C:/Seafile/seafile-server-4.0.6/seahub;
        }

        location /media {
            root C:/Seafile/seafile-server-4.0.6/seahub;
        }

    }

访问 domain.net/cloud(或 192.168.1.50/cloud)可以让我毫无问题地进入 seafile。访问 domain.net 给了我默认的 nginx 页面,这是有道理的,因为没有为此定义位置

问题是 domain.net/couchpotato 把我带到https://domain.net/#couchpotato并且它没有加载

如果在 nginx.conf 文件中我更改location /couchpotato {}location / {}然后 couchpotato 将正确加载

我很确定我配置 nginx 的方式有问题,但我不确定那是什么,因为这是我第一次使用它

所以我的问题是,为什么使用 /couchpotato 作为位置不起作用?但是使用 / 呢?

4

2 回答 2

0

我对沙发土豆一无所知,但我的猜测是它没有配置为从“子目录”提供服务。当您尝试从 domain.net/couchpotato 访问它时,传递给它的 URI 是 /couchpotato,我假设它不知道如何处理它。

尝试以下其中一项:

1) 将 couchpotato 配置为从 /couchpotato 提供服务(这是在实际的 webapp 某处完成的)。例如,Wordpress 将此称为“站点 URL”,并且可以在管理面板中进行配置。

2)像你对 seafhttp 一样添加一个重写。

rewrite ^/couchpotato(.*)$ $1 break;

这将从 URL 中删除 /couchpotato 以进行内部处理,并将预期的 URI 传递给 webapp。

希望这可以帮助。

于 2015-04-24T14:34:20.587 回答
0

我最终将 seafile 更改为使用根域(可在 / 处访问),之后设置其他位置(如 /couchpotato)工作正常

于 2015-08-04T22:04:03.997 回答