Я пытаюсь защитить паролем весь порт на своем веб-сайте -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;
}
}
Я не тестировал это, но так должно быть.