我正在尝试设置一个密码保护客户网站的开发版本(Plone CMS 驱动)。
实时站点服务于端口 7373,并映射到公共 www 端口 80。
“dev”站点在端口 8383 上运行,并映射到端口 8111。
我目前无权访问客户端的 DNS 记录,因此无法设置子域,但 IP 和不同的端口号可以。
但是,我不知道如何在仍为实时网站提供服务的同时,用密码保护开发网站。我尤其困惑的是,保护设置似乎只针对文件夹,而不是网站?
下面是我拥有的最好的客人(基于我相当缺乏的 apache-foo),但这仅适用于实时站点,而不是开发站点,或者触发密码!
<VirtualHost *:80>
ServerAlias www.site.com
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPreserveHost On
ProxyPass / http://localhost:7373/VirtualHostBase/http/site.com:80/plonesite/VirtualHostRoot/
ProxyPassReverse / http://localhost:7373/VirtualHostBase/http/site.com:80/plonesite/VirtualHostRoot/
</VirtualHost>
<VirtualHost 123.456.789.123:8111>
<Location /plonesitetest/>
AuthType Basic
AuthName "Dev Server"
AuthUserFile "/home/admin/.htpasswd"
Require valid-user
</Location>
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPreserveHost On
ProxyPass / http://localhost:8383/VirtualHostBase/http/123.456.789.123:8111/plonesitetest/VirtualHostRoot/
ProxyPassReverse / http://localhost:8383/VirtualHostBase/http/123.456.789.123:8111/plonesitetest/VirtualHostRoot/
</VirtualHost>
答案1
您的 ProxyPass 行看起来有点混乱,端口号位于 URL 的中间。这真的是 plone 服务器设置来处理传入请求的方式吗(文件/目录名称中的端口号)?
代理的内容非常有顺序性。快速检查 apache 文档后发现,ProxyPass 行可能在 Location 行之前启动,这可能会绕过身份验证内容。不妨尝试以下方法:
<Location /plonesitetest/>
AuthType Basic
AuthName "Dev Server"
AuthUserFile "/home/admin/.htpasswd"
Require valid-user
ProxyPass http://localhost:8383/VirtualHostBase/http/123.456.789.123:8111/plonesitetest/VirtualHostRoot/
ProxyPassReverse http://localhost:8383/VirtualHostBase/http/123.456.789.123:8111/plonesitetest/VirtualHostRoot/
</Location>
这将代理请求http://123.456.789.123:8111/plonesitetest/进入 plone 网站。
答案2
Respost:
<VirtualHost *:8282>
ServerName www.gpscoder.com
ProxyPass / http://www.gpscoder.com:8080/
ProxyPassReverse / www.gpscoder.com:8080/
ProxyPreserveHost on
<Proxy *>
AuthType Basic
AuthName "Dev Server"
AuthUserFile "/var/www/xxxxxxx/.htpasswd"
Require valid-user
</Proxy>
</VirtualHost>
答案3
现场直播
<VirtualHost *:80>
ServerName siteurl.com
DocumentRoot "/path/to/live/site"
ProxyPreserveHost On
ProxyRequests Off
Proxypass / http://siteurl.com:7373/
ProxypassReverse / http://siteurl.com:7373/
</VirtualHost>
然后对于你的开发网站
<VirtualHost *:8111>
ServerName siteurl.com
DocumentRoot "/path/to/dev/site"
ProxyPreserveHost On
ProxyRequests Off
Proxypass / http://siteurl.com:8383/
ProxypassReverse / http://siteurl.com:8383/
<Proxy *>
AuthUserFile /home/admin/.htpasswd
AuthType Basic
AuthName "Dev Server"
Require valid-user
</Proxy>
</VirtualHost>
答案4
这会有所帮助。
Google 的第一个结果:vhost password
。