Я только что установил CouchDB из исходного кода на свой Debian с apache 2.4.10.
$ curl http://localhost:5984/
{"couchdb":"Welcome","uuid":"76929f1fc6f1e2c01edcd5b712fff044","version":"1.6.1","vendor":{"version":"1.6.1","name":"The Apache Software Fou
ndation"}}
Я хочу использовать его через https Apache Reverse Proxy:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All
SSLRequireSSL
</Directory>
#For using my owncloud and wiki without HTTP AUTH, and all the rest
#with HTTP AUTH
<LocationMatch "^/(?!owncloud|wiki)">
AuthType Basic
AuthName "Acces Restreint"
AuthBasicProvider file
AuthUserFile /home/...myfile
Require valid-user
AllowOverride All
</LocationMatch>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
#Here I try to configure my reverse proxy for accessing CouchDB through https://example.com/couchdb/
<Location /couchdb>
ProxyPass http://localhost:5984/ ttl=60
ProxyPassReverse http://localhost:5984/
ProxyPassReverseCookieDomain localhost example.com
RequestHeader set Origin "http://localhost:5984"
AllowOverride all
AuthType Basic
AuthName "Acces Restreint"
AuthUserFile /home/...myfile
Require valid-user
</Location>
SSLProxyEngine On
SSLEngine on
SSLCertificateFile /..../file.pem
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
</IfModule>
Но когда я пытаюсь подключиться через Интернет к: https://example.com/couchdb
Получаю такой результат:
{"error":"unauthorized","reason":"Name or password is incorrect."}
Кажется, что couchdb отвечает, но почему он требует авторизации, пока не использовал:
$curl http://localhost:5984/
Есть подсказка?
Нашел! Мне пришлось отключить заголовок авторизации:
Мне также пришлось изменить http: // локальный: 5984 / для http: // локальный: 5984
<Location /couchdb>
ProxyPass http://localhost:5984 ttl=60
ProxyPassReverse http://localhost:5984
ProxyPassReverseCookieDomain localhost example.com
RequestHeader set Origin "http://localhost:5984"
RequestHeader unset Authorization
AllowOverride all
AuthType Basic
AuthName "Acces Restreint"
AuthUserFile /...
Require valid-user
</Location>