我有一个服务(Plack),它在http://myhost.com:5000上侦听 我想用基本身份验证密码保护对它的访问
当我在 nginx conf 文件中设置服务器指令时,我与 Plack 发生冲突(无法绑定到 0.0.0.0:5000,因为它被 Plack 使用,反之亦然)。所以这让我无处可去。
然后我在 conf 文件中启用了 Basic Auth,其中的 location 指令为:
server {
location / {
proxy_pass http://localhost:5000;
auth_basic "Restricted";
auth_basic_user_file /home/userx/.htpasswd;
}
}
当 nginx "/" 被命中时,它会将其重定向到端口 5000 并询问用户名/密码。但是我的应用程序依赖于包含端口(http://myhost.com:5000/)的 url 来查找资源,并且端口从请求中被剥离,所以它最终是http://myhost.com我在所有资源/css/images/javascripts 等上都得到了 404。尝试了各种指令,如 port_redirection 等。
我尝试使用以下方式重写 URL:
location / {
auth_basic "Restricted";
auth_basic_user_file /home/userx/.htpasswd;
rewrite ^/(.*) https://example.com/$1 permanent;
}
它得到了想要的结果(http://myhost.com:5000)并且找到了所有资源,但基本身份验证永远不会启动,所以我从来没有收到询问用户名/密码的提示
作为最后一次尝试,它尝试使用直接保护 url
location http://localhost:5000 {
auth_basic "Restricted";
auth_basic_user_file /home/userx/.htpasswd;
}
但这也不起作用。
有人可以帮忙吗?