Nginx 密码保护整个端口号 8081

Nginx 密码保护整个端口号 8081

我正在尝试用密码保护我网站上的整个端口——https://domain.com:8081http://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(或者我想要的任何其他端口)?

如果有任何区别,我正在使用带有 Nginx 1.4.6 的 Ubuntu 14.04.1 LTS。

谢谢。

[编辑]

在实施 Nathan 的解决方案时,https://domain.com:8081/phpmyadmin/(SSL),它会提示输入用户名和密码,但会给我一个“500 内部服务器错误”页面。以下是 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 错误请求 普通 HTTP 请求已发送到 HTTPS 端口”。错误日志中没有任何记录;相反,Nginx 访问日志中显示以下内容:

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

答案1

我假设你有一个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;
    }
}

我还没有测试过,但它应该是这样的。

相关内容