На сервере разработки я установил инструмент Jenkins для автоматического тестирования. Это работает на порту 8080. Если я перейду на www.mysite.com:8080
Я вижу для этого командную панель. Я хочу сделать это недоступным для внешнего мира, защитив паролем с помощью Apache. (Мой сервер работает под управлением Ubuntu 12.04 LTS). Я прочитал следующее страница за общие советы и особенно по теме безопасности они предлагать следующие настройки:
<VirtualHost *:80>
ServerAdmin your@email.address.com
DocumentRoot "/opt/apache/httpd/htdocs"
ServerName jenkins.yourdomain.com
ErrorLog "logs/jenkins-error_log"
ProxyPass /jenkins/ ajp://127.0.0.1:8102/jenkins/
ProxyPassReverse /jenkins/ ajp://127.0.0.1:8102/jenkins/
<Location />
Order allow,deny
Allow from all
</Location>
<Location /jenkins/>
AuthType basic
AuthName "jenkins"
AuthUserFile "/opt/apache/httpd/conf/.htpasswd"
</Location>
</VirtualHost>
Мой файл Apache в настоящее время имеет следующие настройки:
<VirtualHost *:80>
# Admin email, Server Name (domain name), and any aliases
ServerAdmin tech@mysite.com
ServerName www.mysite.com
ServerAlias mysite.com
# Index file and Document Root (where the public files are located)
DirectoryIndex index.html index.php
DocumentRoot /var/www
# Log file locations
LogLevel warn
ErrorLog /var/log/apache/error.log
CustomLog /var/log/apache/access.log combined
</VirtualHost>
Мне не удалось заставить предложенный подход работать без ошибок (хотя сообщений в консоли или в журналах нет), поэтому я добавил следующие строки:
<VirtualHost *:8080>
ServerName www.mysite.com
ProxyPass / http://www.dev.mysite.com:8080/
ProxyPassReverse / www.dev.mysite.com:8080/
ProxyPreserveHost on
<Proxy *>
AuthType Basic
AuthName "Dev Server"
AuthUserFile "/home/.htpasswd"
Require valid-user
</Proxy>
</VirtualHost>
И в моем .htpasswd
файл я помещаю следующие строки:
john:n5MfE
dave:9fluR
Затем я перезапустил Apache, но порт 8080
по-прежнему доступен без пароля. Я следую правильной процедуре?
Я не уверен <Proxy>
указатель директивы HTTP Basic auth (в документации предлагается только ограничение по IP / домену). Я думаю, вам следует просто использовать общий метод, например:
<Location />
AuthType Basic
AuthName "Dev Server"
AuthUserFile "/home/.htpasswd"
Require valid-user
</Location>
Вы должны использовать программу htpasswd для создания и добавления пользователей в файл .htpasswd, так как пароли в виде открытого текста не поддерживаются в Linux, например.
htpasswd -c /home/.htpasswd john
New password:
Re-type new password:
Adding password for user john
создаст файл и добавит пользователя john с указанным вами паролем. Затем вы можете добавить других таких пользователей
htpasswd /home/.htpasswd dave
New password:
Re-type new password:
Adding password for user dave