Nginx基本身份验证在http上工作但不在https上工作

时间:2016-10-22 08:23:05

标签: ssl nginx https nginx-location

我在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的两个网址都受密码保护?

2 个答案:

答案 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;
    }
}