У меня Mac Mini с запущенным OS X Server 5.1.7. У меня есть служба, доступная локально через http://127.0.0.1:3000/ask (без аутентификации), и я хочу сделать его доступным извне, но с аутентификацией с использованием каталога OS X Server.
Итак, в разделе веб-сайтов я создал новый веб-сайт с именем intranet.mydomain.com, который доступен только «пользователям интрасети» (группа, которую я создал).
После этого я пытаюсь получить доступ https://intranet.mydomain.com , он запрашивает имя пользователя и пароль и работает с учетными данными пользователя, входящего в группу «Пользователи интрасети».
Теперь, чтобы настроить обратный прокси, я перехожу к файлу
/Library/Server/Web/Config/apache2/sites/0000_127.0.0.1_34543_intranet.mydomain.com.conf
И добавьте следующее:
ProxyPass / спросить http://127.0.0.1:3000/ask
ProxyPassReverse / спросить http://127.0.0.1:3000/ask
после Directory
узел.
Теперь при доступе к https://intranet.mydomain.com/ask , Я попадаю во внутреннюю службу, но аутентификация не запрашивается. Я считаю, что это должно быть нормально, поскольку в конфигурации XML только Directory
на узле настроена аутентификация:
<Directory "/Library/Server/Web/Data/Sites/intranet.mydomain.com">
Options All -Indexes -ExecCGI -Includes +MultiViews
AllowOverride None
<IfModule mod_dav.c>
DAV Off
</IfModule>
<IfDefine !WEBSERVICE_ON>
Require all denied
ErrorDocument 403 /customerror/websitesoff403.html
</IfDefine>
AuthType Digest
AuthName "Realm ID 75040558"
<Limit PUT DELETE PROPPATCH PROPFIND MKCOL COPY MOVE LOCK UNLOCK>
Require no-user
</Limit>
<Limit GET HEAD OPTIONS CONNECT POST>
Require group memberusers
</Limit>
<IfDefine !WEBSERVICE_ON>
Require all denied
ErrorDocument 403 /customerror/websitesoff403.html
</IfDefine>
</Directory>
Итак, чтобы сделать его глобальным (как для файловой системы, так и для путей не в файловой системе), я изменил Directory
узел к узлу местоположения, например:
<Location "/">
Options All -Indexes -ExecCGI -Includes +MultiViews
AllowOverride None
<IfModule mod_dav.c>
DAV Off
</IfModule>
<IfDefine !WEBSERVICE_ON>
Require all denied
ErrorDocument 403 /customerror/websitesoff403.html
</IfDefine>
AuthType Digest
AuthName "Realm ID 75040558"
<Limit PUT DELETE PROPPATCH PROPFIND MKCOL COPY MOVE LOCK UNLOCK>
Require no-user
</Limit>
<Limit GET HEAD OPTIONS CONNECT POST>
Require group memberusers
</Limit>
<IfDefine !WEBSERVICE_ON>
Require all denied
ErrorDocument 403 /customerror/websitesoff403.html
</IfDefine>
</Location>
После этого, получив доступ к маршруту моего домена, меня попросят пройти аутентификацию, и я могу войти в систему. Однако доступ к пути https://intranet.mydomain.com/ask
Меня просят аутентифицировать (все хорошо!), Но он не принимает ни одного имени пользователя / пароля действительного пользователя (обратите внимание, что он работает для /
но не для /ask
).
Есть идеи, почему?
Вот мой полный файл конфигурации для этого веб-сайта перед изменением Directory
к Location
:
<VirtualHost 127.0.0.1:34543>
ServerName https://intranet.mydomain.com:443
ServerAdmin admin@example.com
DocumentRoot "/Library/Server/Web/Data/Sites/intranet.mydomain.com"
DirectoryIndex index.html index.php default.html
CustomLog /var/log/apache2/access_log combinedvhost
ErrorLog /var/log/apache2/error_log
<IfModule mod_ssl.c>
SSLEngine Off
SSLCipherSuite "HIGH:MEDIUM:!MD5:!RC4"
SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2
SSLProxyEngine On
SSLCertificateFile "/etc/certificates/intranet.mydomain.com.A86175C9AFAC45AA2D0D590A8B94ACC1455519F8.cert.pem"
SSLCertificateKeyFile "/etc/certificates/intranet.mydomain.com.A86175C9AFAC45AA2D0D590A8B94ACC1455519F8.key.pem"
SSLCertificateChainFile "/etc/certificates/intranet.mydomain.com.A86175C9AFAC45AA2D0D590A8B94ACC1455519F8.chain.pem"
SSLProxyProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
</IfModule>
<Directory "/Library/Server/Web/Data/Sites/intranet.mydomain.com">
Options All -Indexes -ExecCGI -Includes +MultiViews
AllowOverride None
<IfModule mod_dav.c>
DAV Off
</IfModule>
<IfDefine !WEBSERVICE_ON>
Require all denied
ErrorDocument 403 /customerror/websitesoff403.html
</IfDefine>
AuthType Digest
AuthName "Realm ID 75040558"
<Limit PUT DELETE PROPPATCH PROPFIND MKCOL COPY MOVE LOCK UNLOCK>
Require no-user
</Limit>
<Limit GET HEAD OPTIONS CONNECT POST>
Require group memberusers
</Limit>
<IfDefine !WEBSERVICE_ON>
Require all denied
ErrorDocument 403 /customerror/websitesoff403.html
</IfDefine>
</Directory>
ProxyPass /ask http://127.0.0.1:3000/ask
ProxyPassReverse /ask http://127.0.0.1:3000/ask
</VirtualHost>