Nginx возвращает 404 после входа в систему с базовой аутентификацией

Я создал веб-сайт с next.js, и после развертывания на моем собственном тестовом сервере все работало так, как ожидалось. Поскольку есть и область администрирования, я сделал конфигурацию для защиты /admin url с использованием базовой аутентификации nginx. Вот мои шаги:

  1. Сначала я установил apache2-utils, используя sudo apt-get install apache2-utils на Ubuntu 18.04
  2. Я создал свои учетные данные, выполнив: htpasswd /etc/nginx/.htpasswd myusername. После щелчка по enter я предоставил password
  3. Я попытался просмотреть содержимое файла, и все было хорошо, потому что я видел usename:hashedpassword
  4. Я сделал следующую конфигурацию в nginx

    location /admin { auth_basic "Zone protege"; auth_basic_user_file /etc/nginx/.htpasswd; }

Вот моя полная конфигурация для этого приложения, но я скрыл другие детали конфигурации (TLS, перенаправление http и т. Д.):

 server {
    server_name mydomainename.com;
    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
     }


    location /admin {
        auth_basic "Zone protege";
        auth_basic_user_file /etc/nginx/.htpasswd;
        try_files $uri $uri/ =404;
      } 
}

Когда я пытаюсь получить доступ к защищенной странице, я получаю следующее:  Всплывающее окно входа

Когда я нажимаю неверные учетные данные, я не получаю страницу запроса, как ожидалось.

Поэтому, когда я нажимаю ожидаемые учетные данные, я получаю 404:  Ошибка 404

Я уже читал следующие решения: NGINX auth_basic выдает мне сообщение "404 не найден" ... NGINX htpasswd 404 не найден

Также пробовали другие решения, даже если они не помечены как решающие проблему.


person Christian Lisangola    schedule 01.05.2020    source источник
comment
замените localhost: 3000 на localhost : 3001 и настройте синтаксис сервера netcat nc -l -p 3001 для исходного netcat Хоббита или nc -l 3001 для netcat BSD / MacOS (по крайней мере, это распространенные реализации), затем войдите в firefox, что вы получите на сервере netcat?   -  person hanshenrik    schedule 01.05.2020


Ответы (1)


Попробуй это ?

server {
    server_name mydomainename.com;
    auth_basic "Zone protege";
    auth_basic_user_file /etc/nginx/.htpasswd;

    location / {
        auth_basic off;

        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }

    location /admin {
        #auth_basic on;

        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    } 
}
person UreyMt    schedule 01.05.2020