浏览 3.7k
server {
auth_basic "Authentication Required";
auth_basic_user_file /etc/nginx/htpasswd.users;
location / {
proxy_pass http://192.168.72.209:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_connect_timeout 300;
}
}
我把Nginx和上游的应用都安装在安装在同一台机器上了,使用相同的IP地址192.168.72.209,现在我通过IP地址进行访问,Nginx 密码认证框无法弹出。不知道什么原因。
感谢陶辉老师详细的回复。 那就是对于HTTP1.0和HTTP1.1,具体使用哪个版本是服务器决定的。客户端没有选择的权力,极端的情况下如果浏览器不支持http1.0,那么就没有办法和服务器进行通信了?
抓包对比下,包括:
1、不使用Nginx时,抓包看下Websocket的握手,包括在浏览器和Nginx上游服务上;
2、使用Nginx时,抓包看下Nginx上游服务。
从你的错误请求来看,貌似url的匹配出问题了,正常应该是返回101,但你返回 了404
可以是可以,但得用NGINX的子请求机制,直接用指令是不行的,得用njs了,写JavaScript脚本,调用r.subrequest,分别请求后端,然后把数据整合一下。
可以参考NGINX官网上的njs文档,有很多示例。
微信公众号
加入微信群