我正在尝试限制用户通过用户名和密码访问网站。在apache中执行它非常简单。我试图在nginx中为不同的端口,而不仅仅是80,但服务器中托管的应用程序将使用的其他一些端口。 (它是一个nodejs应用程序,目前它在端口3000上打开)
到目前为止我一直在尝试: 已安装的apache2实用程序:
sudo apt-get install apache2-utils
创建htpassword用户/密码:
sudo htpasswd -c /etc/nginx/.htpasswd username
在etc / nginx / conf.d / default.conf中添加了auth_user:
. . .
listen 80;
server_name localhost;
location / {
. . .
auth_basic "Private Property";
auth_basic_user_file /etc/nginx/.htpasswd;
}
. . .
重新加载nginx:
sudo service nginx reload
现在,当我打开网站时,它会询问我的用户名/密码,但是一旦我给他们,它就会一直问我并且不让我登录。
我还想通过user / pass添加另一个要阻止的端口,如端口3000;
在etc / nginx / conf.d / default.conf中我尝试通过以下方式添加端口:
. . .
listen 80;
listen 3000;
server_name localhost;
location / {
. . .
auth_basic "Private Property";
auth_basic_user_file /etc/nginx/.htpasswd;
}
. . .
和
server {
listen 80;
server_name localhost;
location / {
...
auth_basic "Restricted Content";
auth_basic_user_file .htpasswd;
}
}
server {
listen 3000 default_server;
server_name localhost;
location / {
...
auth_basic "Restricted Content";
auth_basic_user_file .htpasswd;
}
}
但是当重新加载nginx时,它会抛出错误。
所以我的问题是:
如何让htpassword正常工作?
如何让htpassword在80以外的端口上正常工作,应用程序仍能正常运行?