所以我一直在阅读整个服务器设置,其中Nginx在nodejs之前用作反向代理,以便它在服务于静态内容的同时允许节点执行动态内容。我的问题是,为什么有人希望使用nginx前端将代理转换为websocket?如果nginx提供静态内容(HTML,CSS,JS,媒体等),那么所提供的JS文件不能直接使用ip地址和websocket在nodejs中侦听的端口连接到服务器服务器?为什么要通过nginx连接到服务器上的websocket?还是我不清楚这种情况?谢谢!为什么使用nginx作为websocket代理?
回答
WebSocket应用程序在客户端和服务器之间保持一个长时间运行的连接,以促进实时应用程序的开发。用于将连接从HTTP升级到WebSocket的HTTP升级机制使用升级和连接标头。反向代理服务器在支持WebSocket时面临一些挑战。一种是WebSocket是逐跳协议,因此当代理服务器截获来自客户端的升级请求时,它需要将自己的升级请求发送到后端服务器,包括适当的标头。另外,由于WebSocket连接的寿命很长,与HTTP使用的典型的短暂连接相反,反向代理需要允许这些连接保持打开状态,而不是关闭它们,因为它们看起来是空闲的。
NGINX通过允许在客户端和后端服务器之间建立隧道来支持WebSocket。对于NGINX从客户端发送的升级请求传递给后台服务器,升级和连接头必须显式设置,如下例所示:
location /wsapp/ {
proxy_pass http://wsbackend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
一旦做到这一点,NGINX交易以此为WebSocket连接。
欲了解更多详情,请访问: - https://www.nginx.com/blog/websocket-nginx/ https://blog.martinfjordvald.com/2013/02/websockets-in-nginx/
希望这将有助于!
你已经解释了'如何',但我想知道'为什么'。当你直接引用nodejs服务器的ip地址和端口时,你为什么要使用Nginx作为反向代理,而不必通过Nginx?因此,当您的静态内容(例如js文件)需要与节点通信时,您将使用Nginx btu提供所有静态内容,并直接与其建立WebSocket连接。你明白我的观点吗? – TheMAAAN
确定使用nginx的一个原因是代理传递你可以使用它来保护你的API你可以暴露或显示API给前端一个不同的代理通过你可以将它重定向到另一个API你给出的实际API名称这将保护你的代码。其次,您可以使用nginx轻松启用gzip压缩和缩小,并且您的网站排名很高。您还可以使用nginx将您的图像和文件编入索引。你也可以使用nginx作为流媒体服务器。 –
所以如果你直接连接,你不会得到这些功能(除非你自己编程)。如果Nginx与nodejs进程位于同一台机器上,该怎么办?你仍然可以利用你列出的功能吗? – TheMAAAN
- 1. 使用nginx作为docker的代理
- 2. nginx的配置作为代理的WebSocket的
- 3. 的Nginx作为安全的WebSocket转发代理(WS - > WSS)
- 4. Nginx作为Lighttpd的代理
- 5. Nginx作为Apache的代理
- 6. Nginx作为Exchange代理
- 7. nginx作为邮件代理
- 8. nginx反向代理websocket
- 9. Nginx反向代理websocket
- 10. 通过nginx代理的websocket?
- 11. 如何使用Nginx作为我的RabbitMQ的websocket函数的反向代理?
- 12. 为什么Node.js作为后台Node.js应用程序的代理而不是Nginx?
- 13. 为什么NGINX想要使用./logs/error.log作为默认值?
- 14. 为什么要使用websocket,使用它有什么好处?
- 15. 为什么代理不使用上httpasyncclient
- 16. 为什么映射websocket不工作?
- 17. 的Nginx作为反向代理
- 18. Nginx作为反向代理与v 1.10.3
- 19. NgInx作为Kong的反向代理
- 20. Nginx作为Apache的反向代理
- 21. 当nginx用作代理时,为什么Rails中间件开销如此之高?
- 22. Nginx:反向代理WebSocket草案76
- 23. Nginx反向代理Websocket验证 - HTTP 403
- 24. nginx 1.2.0 - socket.io - HTTP/1.1 - 代理websocket连接
- 25. Nginx Websocket反向代理抛出错误
- 26. Nginx WebSocket反向代理限制
- 27. 转到websocket,nginx代理是否正确?
- 28. nginx websocket反向代理配置
- 29. 2分钟后Nginx websocket代理断开
- 30. 为什么Nginx默认使用'accept_mutex'''?
你会得到nginx的安全模型。任何(比如说)你在主站点上设置的ip地址/引用者限制也适用于websocket。 –
你应该阅读此... http://stackoverflow.com/questions/224664/difference-between-proxy-server-and-reverse-proxy-server – JClarke
@Jclarke抱歉使用术语“代理”我编辑我的问题使用术语“反向代理”。但是,我的问题仍然存在.. – TheMAAAN