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。
相关推荐
实现方案 采用目前比较成熟的WebSocket技术,WebSocket协议为创建客户端和...在实际的生产环境中,要求多个WebSocket服务器必须具有高性能和高可用,那么WebSocket协议就需要一个负载均衡层,NGINX从1.3开始支持WebSoc
除了常见的HTTP服务,Nginx还可以作为反向代理用于WebSocket、FTP、IMAP/POP3等协议,甚至作为TCP/UDP代理。此外,Nginx还可用于日志切割、静态文件压缩、SSL/TLS终止等场景。 **6. Nginx与其他后端技术的集成** ...
本章提供了一些非典型应用的案例,如使用Nginx作为WebSocket代理、FTP服务器等,拓宽了Nginx的应用领域。 6. **第13章 Nginx的标准HTTP模块**: Nginx拥有丰富的HTTP模块,本章将深入讨论这些模块的功能和用法,如...
《第11章 Nginx的非典型应用实例》展示了Nginx在常规Web服务之外的用途,比如用作反向代理缓存、作为WebSocket服务器、或者作为静态文件服务器等。这部分内容将拓宽你对Nginx应用范围的理解。 《第13章 Nginx的标准...
三、Nginx反向代理 Nginx作为反向代理服务器,可以隐藏后端服务器的IP和端口,提高系统的可扩展性和负载均衡能力。例如,将所有对`/api`的请求转发到内部的API服务器: ```nginx http { upstream api_servers { ...
《第11章 Nginx的非典型应用实例》展示了Nginx在边缘计算、静态文件服务、WebSocket支持等领域的应用。这部分内容有助于拓宽读者对Nginx功能的认知,了解其在复杂网络环境下的多元角色。 《第13章 Nginx的标准HTTP...
2. **反向代理:** Nginx 可以作为反向代理服务器,隐藏后端服务器的IP和配置,实现负载均衡,提高服务可用性。 3. **负载均衡:** 它可以将来自客户端的请求分发到多个后端服务器,确保资源的高效利用。 4. **缓存...
2. **反向代理**:Nginx可以作为反向代理服务器,隐藏后端真实服务器,提高系统可用性和负载均衡。 3. **负载均衡**:通过配置,Nginx能够将请求分发到多个后端服务器,实现高并发下的负载均衡。 4. **URL重写**:...
这里我们关注的是"zerver nginx集成环境",这通常指的是一个预配置的环境,其中包含了Zerver应用服务器与Nginx反向代理服务器的整合。这样的集成环境旨在为Web应用程序提供高性能、高可用性和负载均衡的能力。下面将...
读者将学习如何安装Nginx,创建基本的配置文件,以及如何配置服务器块来托管静态文件、动态内容和反向代理。书中会有大量实例展示如何编写和调试配置文件,确保服务器正确运行。 Nginx的模块化设计是其强大之处。...
Nginx则是一款强大的反向代理服务器,能够实现负载均衡。接下来我们将深入探讨如何利用这三者来实现session共享和负载均衡。 1. **SSM框架中的Session管理** 在SSM框架中,通常会将session存储在本地服务器的内存...
4. **反向代理**:Nginx可作为反向代理服务器,隐藏后端真实服务器,实现负载均衡、提高安全性,并可以进行缓存优化,提升访问速度。 5. **负载均衡**:Nginx内置多种负载均衡策略,如轮询、权重、最少连接等,可以...
Nginx以其高性能的反向代理和静态文件处理能力而闻名,而Tomcat作为Java应用服务器,擅长运行Java Servlets和JSP。结合两者,我们可以构建一个强大的Web服务架构。 首先,我们需要理解Nginx的工作原理。Nginx作为一...
除了常见的Web服务,Nginx还可以用于负载均衡、SSL终止、WebSocket代理等。例如,通过upstream指令实现负载均衡,proxy_pass指令实现后端服务的代理,以及利用ngx_http_push_module模块支持WebSocket服务。 **第12...
在部署多站点时,Nginx的配置文件需要根据每个站点的需求进行定制,包括绑定不同的域名、定义虚拟主机、配置反向代理规则等。对于Tornado,需要编写Python代码实现业务逻辑,并配置Supervisord来管理多个Tornado实例...
在这个"web-socket-practice"项目中,我们将通过Nginx服务器来实践WebSocket配置,并实现安全的HTTPS连接。 首先,WebSocket协议的使用通常涉及到在HTTP服务器上添加特定的配置。Nginx,作为一个高性能的反向代理...
2. **配置 `nginx` 反向代理**:在 `nginx` 配置文件(`nginx.conf`)中,设置多个上游服务器,指定为 `tomcat` 实例的IP和端口。 3. **负载均衡策略**:可以设置轮询、最少连接数、IP哈希等多种负载均衡策略,根据...
例如,可以使用反向代理服务(如Nginx)来分发WebSocket连接,确保多个服务器实例之间的负载平衡。同时,Redis也可以配置为集群模式,以提高数据安全性并实现故障自动切换。 在这个项目中,开发者可能还考虑了安全...
第11章“Nginx的非典型应用实例”则展示了Nginx在常规Web服务之外的应用,如作为反向代理服务器、流媒体服务器、FTP服务器等。这些非典型应用突显了Nginx的灵活性和可扩展性,使得它能够在各种IT环境中发挥重要作用...
WebSocket协议本身并不提供这些,因此可能需要结合其他技术如SSL/TLS加密、反向代理服务器(如Nginx)或分布式会话管理来实现。 最后,WebSocket-Single_All这个文件可能是包含了整个项目的所有源码和资源文件,...