我在centos 6上运行nginx。域配置为使用ssl。某些特定文件夹需要受密码保护。如果我用http键入基本的URL,浏览器会要求输入用户并通过。如果我用https键入相同的URL,则将显示特定文件夹的索引文件而不要求用户传递。
我在我的域特定的nginx.conf文件中有这个:
location /protected_folder {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
如何确保使用http和https的两个网址都受密码保护?
答案 0 :(得分:1)
我看到nginx在同一目录中有两个配置文件:nxingx.conf和snginx.conf。我只需要使用相同的auth规则更新snginx.conf并且一切正常。
答案 1 :(得分:1)
您需要将受限制的配置放在80和443端口中:
的/ etc / nginx的/位点可用/ MY_VHOST
server
{
listen 80;
server_name YOUR.FQDN;
.....other config of vhost.....
location /protected_folder {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
server
{
listen 443;
server_name YOUR.FQDN;
.....other config of vhost.....
location /protected_folder {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
或者您可以将http请求重定向到https:
server
{
listen 80;
server_name YOUR.FQDN;
return 301 https://YOUR.FQDN$request_uri;
}
server
{
listen 443;
server_name YOUR.FQDN;
.....other config of vhost.....
location /protected_folder {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}