Назад | Перейти на главную страницу

Nginx защищает паролем весь номер порта 8081

Я пытаюсь защитить паролем весь порт на своем веб-сайте -https://domain.com:8081 и http://domain.com:8081

Я попытался отредактировать /etc/nginx/sites-enabled/domain.com.vhost, добавив следующее в блоке сервера безрезультатно (которое я получил от эта ссылка, за исключением того, что ссылка касается паролей, защищающих каталоги, а не порты):

location ^~ :8081 {
auth_basic            "Restricted Area";
auth_basic_user_file  conf/htpasswd;
}

Я также пробовал "location: 8081", но это тоже не сработало.

Как я могу защитить паролем порт 8081 (или любой другой порт, который я хочу в этом отношении)?

Если это имеет значение, я использую Ubuntu 14.04.1 LTS с Nginx 1.4.6.

Спасибо.

[РЕДАКТИРОВАТЬ]

При реализации решения Натана при переходе к https://domain.com:8081/phpmyadmin/ (SSL), он вызывает запрос имени пользователя и пароля, но дает мне страницу «500 Internal Server Error». Вот что отображается в журнале ошибок Nginx:

[crit] 3390#0: *154 open() "/etc/nginx/conf/htpasswd" failed (13: Permission denied), client: 152.35.52.108, server: domain.com, request: "GET /phpmyadmin/ HTTP/1.1", host: "domain.com:8081"

Когда собираешься http://domain.com:8081/phpmyadmin/ (не SSL), он дает мне «400 Bad Request. Обычный HTTP-запрос был отправлен на порт HTTPS». При этом ничего не регистрируется в журнале ошибок; вместо этого в журнале доступа Nginx появляется следующее:

"GET /phpmyadmin/ HTTP/1.1" 40.1" 400 279 "-" "[user agent]"

Я предполагаю, что у вас есть отдельный server { блок для этого порта ... так что вы просто защитите / каталог из этого серверного блока:

location / {
auth_basic            "Restricted Area";
auth_basic_user_file  conf/htpasswd;
}

Так:

server {
listen 8081;
server_name whateveryouwant;
root /path/to/root/folder;
location / {
    auth_basic            "Restricted Area";
    auth_basic_user_file  conf/htpasswd;
    }
}

Я не тестировал это, но так должно быть.