`

Nginx反向代理websocket配置实例

阅读更多
user apps apps;
worker_processes  4; # 这个由于我是用的虚拟机,所以配置的 4 ,另外 tengine 可以自动根据CPU数目设置进程个数和绑定CPU亲缘性
# worker_processes auto
# worker_cpu_affinity auto

 

error_log  logs/error.log;

pid        logs/nginx.pid;

#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;

events {
    use epoll;
    worker_connections  65535;
}

# load modules compiled as Dynamic Shared Object (DSO)
#
#dso {
#    load ngx_http_fastcgi_module.so;
#    load ngx_http_rewrite_module.so;
#}

http {
    include       mime.types;
    default_type  application/octet-stream;

    server_names_hash_bucket_size 128;
    client_header_buffer_size 4k;
    large_client_header_buffers 4 32k;
    client_max_body_size 80m;

    sendfile on;
    tcp_nopush     on;

    client_body_timeout  5;
    client_header_timeout 5;
    keepalive_timeout  5;
    send_timeout       5;

    open_file_cache max=65535 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 1;

    tcp_nodelay on;

    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;

    client_body_buffer_size  512k;
    proxy_connect_timeout    5;
    proxy_read_timeout       60;
    proxy_send_timeout       5;
    proxy_buffer_size        16k;
    proxy_buffers            4 64k;
    proxy_busy_buffers_size 128k;
    proxy_temp_file_write_size 128k;

    gzip on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types       text/plain application/x-javascript text/css application/xml;
    gzip_vary on;
    proxy_temp_path   /dev/shm/temp;
    proxy_cache_path  /dev/shm/cache levels=2:2:2   keys_zone=cache_go:200m inactive=5d max_size=7g;

    log_format log_access  '$remote_addr - $remote_user [$time_local] "$request" "$request_time" "$upstream_response_time"'
              '$status $body_bytes_sent "$http_referer" '
              '"$http_user_agent" $http_x_forwarded_for $host $hostname' ;

    #websocket 需要加下这个
    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }

    include /home/apps/tengine/conf/test.com;

}

 

test.com 的配置文件内容:

 

复制代码代码如下:

upstream test.com {
   server 192.168.1.5:9000;
}

 

server {
    listen       80;
    server_name  test.com;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location  ^~  /websocket {
        proxy_pass http://test.com;

        proxy_redirect    off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

}

 

解析 map 指令

上面 nginx.conf 配置中的 map $http_upgrade $connection_upgrade 的作用,参考 http://www.ttlsa.com/nginx/using-nginx-map-method/

该作用主要是根据客户端请求中 $http_upgrade 的值,来构造改变 $connection_upgrade 的值,即根据变量 $http_upgrade 的值创建新的变量 $connection_upgrade,创建的规则就是 {} 里面的东西,请见配置:

 

复制代码代码如下:

    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }

 

其中的规则没有做匹配,因此使用默认的,即 $connection_upgrade 的值会一直是 upgrade。然后如果 $http_upgrade为空字符串的话,那值会是 close。

 

分享到:
评论

相关推荐

    Nginx实战之反向代理WebSocket的配置实例

    实现方案 采用目前比较成熟的WebSocket技术,WebSocket协议为创建客户端和...在实际的生产环境中,要求多个WebSocket服务器必须具有高性能和高可用,那么WebSocket协议就需要一个负载均衡层,NGINX从1.3开始支持WebSoc

    nginx基础和优化配置.rar

    除了常见的HTTP服务,Nginx还可以作为反向代理用于WebSocket、FTP、IMAP/POP3等协议,甚至作为TCP/UDP代理。此外,Nginx还可用于日志切割、静态文件压缩、SSL/TLS终止等场景。 **6. Nginx与其他后端技术的集成** ...

    Nginx学习丛书 Nginx应用与提高

    本章提供了一些非典型应用的案例,如使用Nginx作为WebSocket代理、FTP服务器等,拓宽了Nginx的应用领域。 6. **第13章 Nginx的标准HTTP模块**: Nginx拥有丰富的HTTP模块,本章将深入讨论这些模块的功能和用法,如...

    实战Nginx Nginx教程

    《第11章 Nginx的非典型应用实例》展示了Nginx在常规Web服务之外的用途,比如用作反向代理缓存、作为WebSocket服务器、或者作为静态文件服务器等。这部分内容将拓宽你对Nginx应用范围的理解。 《第13章 Nginx的标准...

    nginx配置教程.rar

    三、Nginx反向代理 Nginx作为反向代理服务器,可以隐藏后端服务器的IP和端口,提高系统的可扩展性和负载均衡能力。例如,将所有对`/api`的请求转发到内部的API服务器: ```nginx http { upstream api_servers { ...

    nginx 中文

    《第11章 Nginx的非典型应用实例》展示了Nginx在边缘计算、静态文件服务、WebSocket支持等领域的应用。这部分内容有助于拓宽读者对Nginx功能的认知,了解其在复杂网络环境下的多元角色。 《第13章 Nginx的标准HTTP...

    nginx-1.8.0.rar

    2. **反向代理:** Nginx 可以作为反向代理服务器,隐藏后端服务器的IP和配置,实现负载均衡,提高服务可用性。 3. **负载均衡:** 它可以将来自客户端的请求分发到多个后端服务器,确保资源的高效利用。 4. **缓存...

    nginx文档.zip

    2. **反向代理**:Nginx可以作为反向代理服务器,隐藏后端真实服务器,提高系统可用性和负载均衡。 3. **负载均衡**:通过配置,Nginx能够将请求分发到多个后端服务器,实现高并发下的负载均衡。 4. **URL重写**:...

    zerver nginx集成环境

    这里我们关注的是"zerver nginx集成环境",这通常指的是一个预配置的环境,其中包含了Zerver应用服务器与Nginx反向代理服务器的整合。这样的集成环境旨在为Web应用程序提供高性能、高可用性和负载均衡的能力。下面将...

    Nginx开发从入门到精通pdf高清带目录

    读者将学习如何安装Nginx,创建基本的配置文件,以及如何配置服务器块来托管静态文件、动态内容和反向代理。书中会有大量实例展示如何编写和调试配置文件,确保服务器正确运行。 Nginx的模块化设计是其强大之处。...

    ssm+redis+nginx实现session共享和负载均衡

    Nginx则是一款强大的反向代理服务器,能够实现负载均衡。接下来我们将深入探讨如何利用这三者来实现session共享和负载均衡。 1. **SSM框架中的Session管理** 在SSM框架中,通常会将session存储在本地服务器的内存...

    nginx 全程学习资料全方面剖析。

    4. **反向代理**:Nginx可作为反向代理服务器,隐藏后端真实服务器,实现负载均衡、提高安全性,并可以进行缓存优化,提升访问速度。 5. **负载均衡**:Nginx内置多种负载均衡策略,如轮询、权重、最少连接等,可以...

    Liunx 下 nginx+tomcat 集群建设

    Nginx以其高性能的反向代理和静态文件处理能力而闻名,而Tomcat作为Java应用服务器,擅长运行Java Servlets和JSP。结合两者,我们可以构建一个强大的Web服务架构。 首先,我们需要理解Nginx的工作原理。Nginx作为一...

    实战Nginx取代Apache的高性能Web服务器

    除了常见的Web服务,Nginx还可以用于负载均衡、SSL终止、WebSocket代理等。例如,通过upstream指令实现负载均衡,proxy_pass指令实现后端服务的代理,以及利用ngx_http_push_module模块支持WebSocket服务。 **第12...

    nginx+supervisord+python

    在部署多站点时,Nginx的配置文件需要根据每个站点的需求进行定制,包括绑定不同的域名、定义虚拟主机、配置反向代理规则等。对于Tornado,需要编写Python代码实现业务逻辑,并配置Supervisord来管理多个Tornado实例...

    web-socket-practice:用于通过nginx服务器练习ws配置并加密的简短项目

    在这个"web-socket-practice"项目中,我们将通过Nginx服务器来实践WebSocket配置,并实现安全的HTTPS连接。 首先,WebSocket协议的使用通常涉及到在HTTP服务器上添加特定的配置。Nginx,作为一个高性能的反向代理...

    nginx+tomcat集群简单参考

    2. **配置 `nginx` 反向代理**:在 `nginx` 配置文件(`nginx.conf`)中,设置多个上游服务器,指定为 `tomcat` 实例的IP和端口。 3. **负载均衡策略**:可以设置轮询、最少连接数、IP哈希等多种负载均衡策略,根据...

    dotnet-基于websocket实现的im实时通讯案例

    例如,可以使用反向代理服务(如Nginx)来分发WebSocket连接,确保多个服务器实例之间的负载平衡。同时,Redis也可以配置为集群模式,以提高数据安全性并实现故障自动切换。 在这个项目中,开发者可能还考虑了安全...

    实战Nginx:取代_Apache的高性能Web服务器

    第11章“Nginx的非典型应用实例”则展示了Nginx在常规Web服务之外的应用,如作为反向代理服务器、流媒体服务器、FTP服务器等。这些非典型应用突显了Nginx的灵活性和可扩展性,使得它能够在各种IT环境中发挥重要作用...

    HTML5 WebSocket+Tomcat实现真●Web版即时聊天室(单人+多人)

    WebSocket协议本身并不提供这些,因此可能需要结合其他技术如SSL/TLS加密、反向代理服务器(如Nginx)或分布式会话管理来实现。 最后,WebSocket-Single_All这个文件可能是包含了整个项目的所有源码和资源文件,...

Global site tag (gtag.js) - Google Analytics