我试图提供静态文件的ngin x 1.6和代理套接字流量来自Node.js网络服务器与socket.io。
这是nginx.conf的相关部分:
location /socket.io/ {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
}
它直接在浏览器和 Node.js 之间完美运行,但使用 nginx 1.6 代理时 socket.io 时间太长。握手协议需要太多时间,但如果不间断,它最终会在几分钟后开始工作。
nginx的静态文件交付工作得很好。
会有什么问题呢?
更新:
我分析了一点流量,并确定以下请求持续大约一分钟(这正是请求升级的时间):
Sec-WebSocket-Key: LhZ1frRdl+myuwyR/T03lQ==
Cookie: io=1-A7tpvwmoGbrSvTAAA5
Connection: keep-alive, Upgrade
Upgrade: websocket
....
预期响应是代码101和:
Connecthtml" target="_blank">ion: upgrade
Sec-WebSocket-Accept: HXx3KKJadQYjDa11lpK5y1nENMM=
Upgrade: websocket
...
取而代之,浏览器接收400并且:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: http://localhost:8888
Connection: keep-alive
Content-Type: application/json
Server: nginx/1.6.2
Transfer-Encoding: chunked
更新2:
我确定相同的配置在我的办公室计算机上完美运行,这意味着这是我的家庭计算机问题。无论如何,确定到底出了什么问题会很好。
检查出来!这里最重要的部分是这2个标志^~已经损失了3天,直到我设法让ngin x与Socketio工作…
location ^~ /socket {
proxy_pass http://localhost:3001;
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;
}
我仍然有问题,就像我一样,这是你需要做的:对齐 3 种配置。假设您想通过“mysocket”进行通信:
黑鬼:
location /mysocket/ {
proxy_pass http://localhost:3000;
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;
}
nodejs:
const io = require('socket.io')(server, {
path: '/mysocket'
});
客户:
var io = require('socket.io-client');
const socket = io('http://myserver.com, {
path: '/mysocket'
});
在正在运行的服务器中,这里使用的ngin x配置是:
# Requests for socket.io are passed on to Node on port 3000
location ~* \.io {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy false;
proxy_pass http://localhost:3000;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
我在Nginx上使用uwsgi运行我的DJango应用程序。它目前正在使用这些配置: chdir=/TMP/SRC/ 进程=4 线程=2 server_name 192.168.56.104; charset UTF-8; #最后,将所有非媒体请求发送到Django服务器。 我已经生成了证书。
只有一个nginx.conf文件,电脑没有做过其余任何操作,无安装或配置nginx... 的前提下 测试线上环境需要nginx代理 那前端人员接下来需要干什么 搜索的五花八门,也不知道该先干什么,大佬们有没有什么流程呢
我试图启用gzip压缩的组件我的网站。我有ubuntu 11.04服务器和nginx 1.2。 在网站的nginx配置中,我有以下内容 Yslow和谷歌的速度测量建议我使用gzip来减少网络传输。现在,当我尝试时,我得到了 是否知道我做错了什么,或者我应该做什么来获得压缩内容?
本文向大家介绍使用Docker部署Nginx+Flask+Mongo的应用,包括了使用Docker部署Nginx+Flask+Mongo的应用的使用技巧和注意事项,需要的朋友参考一下 Nginx做为服务器,Mongo为数据库支持,Flask为Python语言的Web框架,利用Docker的容器特性,可以简单地部署在linux服务器上 项目准备 项目主要目录如下 简要说明 docker-file目录
问题内容: 我有以下情形:我定义了一个env变量,并想在nginx块中使用它。参考nginx文档,我在文件中使用伪指令,如下所示: 现在我想将变量用于。我尝试如下所示: 但我最终收到以下错误消息: 问题答案: 正确的用法是,但是从nginx.conf设置的环境变量不能在服务器,位置或http块中使用。 如果使用openresty包(包括Lua),则可以使用环境变量。
在数据采集一节中我们介绍了常见的监控数据源。open-falcon作为一个监控框架,可以去采集任何系统的监控指标数据,只要将监控数据组织为open-falcon规范的格式就OK了。 Nginx的数据采集可以通过ngx_metric来做。 工作原理 ngx_metric是借助lua-nginx-module的log_by_lua功能实现nginx请求的实时分析,然后借助ngx.shared.DICT