在开发服务器上,我安装了Jenkins工具进行自动化testing。 这在端口8080上运行。如果我去www.mysite.com:8080我可以看到这个命令面板。 我想通过使用Apache的密码保护它使外部世界无法访问。 (我的服务器运行Ubuntu 12.04 LTS)。 我阅读了以下页面以获得一般build议,特别是关于安全性的主题,他们提出了以下设置:
<VirtualHost *:80> ServerAdmin [email protected] 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 [email protected] 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>
我无法得到build议的方法工作没有错误(虽然在控制台或日志中没有消息),所以我添加了以下几行:
<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仍然无需密码便可访问。 我遵循正确的程序?
您应该使用htpasswd程序创build用户并将其添加到.htpasswd文件,因为明文密码在Linux上不受支持
htpasswd -c /home/.htpasswd john New password: Re-type new password: Adding password for user john
将创build该文件并添加用户john与您提供的密码。 然后你可以添加这样的其他用户
htpasswd /home/.htpasswd dave New password: Re-type new password: Adding password for user dave
我不确定<Proxy>指令处理HTTP基本身份validation(文档build议只限制IP /域)。 我认为你应该使用一般的方法,如:
<Location /> AuthType Basic AuthName "Dev Server" AuthUserFile "/home/.htpasswd" Require valid-user </Location>