我目前在Apache上的Nextcloud环境中使用新的debian-setup有两个问题。
Nextcloud版本:12.0.4 操作系统:Debian 9.3.0 Apache版本:2.4.25 PHP版本:PHP-FPM 7.0.27
在我的Apache上,我通常使用Basic Auth。因此,如果您浏览到h ****://my.server.com,您将受到基本身份验证请求的挑战。我在h ****:// myserver / cloud上运行Nextcloud。在那里我禁用了基本身份验证。详情:
h ****://my.server.com(提供一些基本的index.html,包含一些信息。通过Basic Auth验证) h ****://my.server.com/cloud(nextcloud。没有基本身份验证) h ****://my.server.com/otherservice(其他服务。通过Basic Auth验证 - 此时尚未实现降低复杂性)
我使用PHP-FPM,因此使用mod_proxy_fcgi,而不是mod_php。另外,我使用fail2ban来保护apache-auth和nextcloud。
你会在底部找到我的配置文件。
第1期
对于云目录,我按照建议使用“满足任何”+“全部允许”禁用了基本身份验证。通常这是有效的。如果我浏览(在一个新的浏览器中)h ****://my.server.com/cloud我没有获得Basic Auth请求,并且可以正常登录Nextcloud。登录快速而且很好。但是,如果我首先浏览到h ****://my.server.com并输入我的Basic Auth登录,然后导航到h ****://my.server.com/cloud,登录非常慢。这是因为Nextcloud正在尝试使用之前在网站根目录中输入的Basic Auth数据。我还启用了将vcl nextcloud记录到文件(日志级别2)。在那里我可以看到,在刷新登录页面时,它尝试使用我的基本身份验证用户登录。
这在很多方面都存在问题。起初它使登录非常缓慢和不舒服。但我也想使用fail2ban来保护nextcloud。但是,如果日志因基本身份验证信息的失败登录尝试而被垃圾邮件发送,则此操作无效。
这也意味着如果我创建了与用于Basic Auth的用户相同的用户,并在nextcloud中使用相同的密码作为解决方法,如果我之前在根页面上进行基本身份验证,则无法注销并登录到其他用户。我一旦因为基本的身份验证数据而再次登录。
我的问题是:如何告诉nextcloud停止尝试在我的apache上使用其他目录中的基本Auth-Data?
第2期
如果我使用Nextcloud-App或者例如Davdroid for Android一些php-Urls没有正确翻译。见这个例子:
访问.log的Apache
80.187.97.128 - - [21/Jan/2018:16:01:10 +0100] "GET /cloud/index.php/avatar/daily/512 HTTP/1.1" 200 1380
Apache的错误.log
[Sun Jan 21 16:01:12.727830 2018] [auth_basic:error] [pid 19050] [client 80.187.97.128:30481] AH01617: user daily: authentication failure for "/avatar/daily/512": Password Mismatch
如您所见,正在访问/cloud/index.php/avatar/daily/512,但不知何故转换为/ avatar / daily / 512。它应该被翻译成/ cloud / avatar / daily / 512。尽管如此,一切似乎都在webclient中工作,我不认为它与Android或App相关。我认为它只是指出了一个配置问题。此行为还会触发fail2ban,因为它会影响基本身份验证,因为我只从基本身份验证中排除/云。这导致了禁止什么样的烦恼。
任何帮助都会被贬低!!
以下是我的config.files
01_redirect_https.conf(在apache2 \ sites-enabled中)
<IfModule mod_proxy.c>
ProxyRequests Off
ProxyVia On
<Proxy *>
AddDefaultCharset off
Allow from all
</Proxy>
</IfModule>
ServerAdmin myserver@mydomain.de
Listen 80
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteCond %{REQUEST_URI} !^/server-status
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
<Location /server-status/>
SetHandler server-status
Order Deny,Allow
Deny from all
Satisfy Any
Allow from 127.0.0.1
</Location>
</VirtualHost>
02_https.conf(在apache2 \ sites-enabled中)
<IfModule ssl_module>
Alias "/cloud" "/var/www/html/cloud/"
Alias "/" "/var/www/html/"
<VirtualHost *:443>
DocumentRoot "/var/www/html"
ServerName my.server.com
ServerAlias myserver
SSLEngine on
SSLProxyEngine on
SSLCertificateFile /etc/ssl/apache2/my.server.com.crt
SSLCertificateKeyFile /etc/ssl/apache2/my.server.com.key
SSLOptions StrictRequire
SSLProtocol all -SSLv2
FilterProvider gzdeflate DEFLATE "%{Content_Type} = 'text'"
<IfModule mod_proxy_fcgi.c>
<Proxy "unix:/var/run/php/php7.0-fpm.sock|fcgi://php7.0-fpm">
# we must declare a (any) parameter in here
# or it won't register the proxy ahead of time
ProxySet disablereuse=off
</Proxy>
<FilesMatch "^/(.*\.php(/.*)?)$">
SetHandler proxy:fcgi://php7.0-fpm
</FilesMatch>
</IfModule>
<IfModule mod_authnz_external.c>
AddExternalAuth pwauth /usr/sbin/pwauth
SetExternalAuthMethod pwauth pipe
AddExternalGroup unixgroup /usr/sbin/unixgroup
SetExternalGroupMethod unixgroup environment
</IfModule>
<Directory /var/www/html>
SSLRequireSSL
Options Indexes FollowSymLinks
Order deny,allow
Allow from all
AuthType Basic
AuthName "This is private"
AuthBasicProvider external
AuthExternal pwauth
GroupExternal unixgroup
Require user daily
</Directory>
Include sites-available/05_cloud.include
</VirtualHost>
</IfModule>
05_cloud.include(在apache2 / includes中)
<Location /cloud>
SSLRequireSSL
SetEnvIf REQUEST_URI ^/cloud/* noauth =1
Satisfy any
</Location>
<Directory /var/www/html/cloud/>
# according to Nextcloud Manual FPM can't read .htaccess php settins so including it here
include /var/www/html/cloud/.htaccess
Options +FollowSymlinks
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/html/cloud
SetEnv HTTP_HOME /var/www/html/cloud
Satisfy Any
</Directory>
这里我的config.php(在/ var / www / html / cloud / config /中)
<?php
$CONFIG = array (
'instanceid' => 'xxx',
'passwordsalt' => 'xxx',
'secret' => 'xxx',
'trusted_domains' =>
array (
0 => 'myserver',
1 => 'my.server.com',
),
'datadirectory' => '/mnt/raid1/cloud/data',
'overwrite.cli.url' => 'https://my.server.com/cloud/',
'overwritehost' => 'my.server.com',
'overwritewebroot' => '/cloud',
'dbtype' => 'mysql',
'version' => '12.0.4.3',
'dbname' => 'nextcloud',
'dbhost' => 'localhost:3306',
'dbport' => '',
'dbtableprefix' => 'oc_',
'dbuser' => 'cloud',
'dbpassword' => 'xxx',
'installed' => true,
'memcache.local' => '\\OC\\Memcache\\APCu',
'log_type' => 'file',
'logtimezone' => 'Europe/Berlin',
'logfile' => '/var/log/nextcloud/cloud.log',
'loglevel' => 2,
'mail_from_address' => 'test',
'mail_smtpmode' => 'php',
'mail_smtpauthtype' => 'LOGIN',
'mail_domain' => 'mydomain.de',
'auth.bruteforce.protection.enabled' => true,
);
答案 0 :(得分:0)
您需要在PHP-FPM配置文件中而不是在apache配置中设置PHP设置。 PHP-FPM无法从apache访问任何内容。