Nginx 怎么反代 带有 HTTP AUTH 的页面

2017-08-21 17:27:42 +08:00
 mjikop1231

比如服务器有个 resilio home sync webui 什么鬼的

如上举例 那么 地址是http://127.0.0.1:8888/并且访问会有一个 http auth 弹框

我现在的 nginx 配置对应部分是这样:

server{
	listen 80;
    server_name ******;
    location / {
    	max_client_body_size 100m;
        proxy_pass http://127.0.0.1:8888;
        proxy_set_header Host $host;
    }
}

直接访问的结果是 404

所以要怎么改配置文件才能正常访问?


??:v2ex 里 tabstop=8?

2766 次点击
所在节点    问与答
9 条回复
ylck
2017-08-21 17:35:53 +08:00
```
proxy_set_header Authorization "Basic $orig_Authorization";
```
mjikop1231
2017-08-21 17:43:12 +08:00
@ylck 这样做了,并没有弹出 HTTP AUTH,仍旧是 404。
shiny
2017-08-21 17:47:14 +08:00
请确定下确实能访问你的 http://127.0.0.1:8888; ,以及能正确访问到这段 nginx 配置?
以下是我的 Resilio 反代配置,以及用了很久了(放在 docker 中,所以 proxy_pass 中的 sync 是主机名)

server {
listen 80;

server_name **;
location / {
proxy_pass http://sync:8888;
}
}
mjikop1231
2017-08-21 17:52:23 +08:00
@shiny 确定啊。但我没有把 resilio 放到 docker 里,我在实体机环境下运行的 resilio。
shiny
2017-08-21 18:08:56 +08:00
@mjikop1231 是不是 docker 没什么区别,无非是改成 ip。理论上应该能用才对。你可以看下 nginx 的日志
mjikop1231
2017-08-21 18:30:52 +08:00
@shiny 除了 access.log 里一堆 404 以外啥都没。。。
rrfeng
2017-08-21 18:44:52 +08:00
404 还是 403 ?
Showfom
2017-08-21 18:52:12 +08:00
proxy_set_header Authorization "Basic base64 编码";

你得直接把密码给写上去的

后面的 base64 编码是 base64(username:password)
Showfom
2017-08-21 18:54:39 +08:00
如果需要登陆的时候验证的话,得自己在 location 下再加一段 auth 认证,反代是不可能的

或者你换个别的方法,直接用 haproxy 或者 iptables 把 tcp 80 端口映射到 8888 端口

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/384620

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX