我尝试使用基本身份验证在nginx后面运行node.js服务器。这是我的最小配置:
$ret = [];
foreach($data as $key => $val) {
$i = 0;
foreach ($val as $v) {
$ret[$i][$key] = $v;
$i++;
}
}
我的第一个问题是,当我转到x.x.x.x时,每次(无限期地)我都会重新出现基本身份验证表单(无论我设置为登录名和密码 - 即使是好的)。
服务器只返回一些纯文本server {
auth_basic "closed website";
auth_basic_user_file /etc/nginx/.htpasswd;
location / {
proxy_pass http://localhost:3000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
,在基本身份验证表单再次出现之前,我可以看一秒。
第二个问题,是否可以阻止x.x.x.x:3000(如果没有,设置授权时没有意义:80)。
谢谢!
顺便说一句,这是我第一次设置nginx(我已经花了很多时间)。
注意:它在没有基本身份验证的情况下工作(或者在我的位置使用res.end("Hello World\n");
)。
答案 0 :(得分:0)
好吧,我的坏,明白了!
显然.htpasswd have to be encrypted,openssl passwd
中的密码工作得很好。
第二个问题很容易,iptables
就是这样。
希望这可能会对nginx的其他新用户有所帮助!
答案 1 :(得分:0)
我已成功使用您的样本。
如果强制节点仅在localhost中侦听,则不需要创建iptables规则。
要创建.passwd文件,您也可以使用htpasswd:
htpasswd -c path/.passwdfile user
如果遗失:
sudo apt-get install apache2-utils