0

我有一个服务(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;
}

但这也不起作用。

有人可以帮忙吗?

4

0 回答 0