# 处理请求的进程个数(干活的进程数),线上服务建议设置为1,设置大于1不能提升nginx的代理性能,甚至性能会更低,但nginx如果要进行大量cpu运算工作,则可以设置为cpu核心数 worker_processes 1; events { # 每一个worker的最大连接数,如果设置大于操作系统最大文件打开数量,则需要修改ulimit worker_connections 1024; } http { # 存储server_name的大小,出现“could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32”后再进行修改即可 server_names_hash_bucket_size 64; # mime.types包含了绝大部分的“Content-type”,没必要修改 include mime.types; # 访问io流编码(本地文件或接口),线上环境设置为utf-8 charset gbk,utf-8; # 是否采用sendfile方式传输,启用就完了,默认会采用read/wirte模式 sendfile on; # 接口存活时长,单位秒 keepalive_timeout 65; # 下面这些是把当前request中的一些请求头传入下一层 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 获取用户真实ip set_real_ip_from 0.0.0.0/0; real_ip_header X-Forwarded-For; # 服务器组定义,建议都加上权值 upstream websocket { # 默认启用的服务ip,max_fails和fail_timeout表示再10秒内错误一次,则表示服务不可用,启用backup服务 server 192.168.0.11:8080 weight=100 max_fails=1 fail_timeout=10s; # backup标记代表是备用服务器,如果主服务器不可用,则会分发到备用服务器 # websocket可以先采用这个方式,保证用户只会连接到一台服务器上 server 192.168.0.12:8080 weight=100 backup; } server { # 监听的端口号 listen 8089; # 需要证书认证,如果不需要,删掉即可 # 如果配置了需要证书,那么需要配置证书的公钥和私钥 ssl on; server_name localhost; # 证书公钥 ssl_certificate 4480050_www.baidu.com.pem; # 证书私钥 ssl_certificate_key 4480050_www.baidu.com.key; proxy_read_timeout 100; location /ws { # 这个是websocket代理的配置 如果是websocket的代理,则必须加上下面三条 proxy_http_version 1.1; proxy_set_header Upgrade "websocket"; proxy_set_header Connection "Upgrade"; #error # 与服务器建立连接,向其传递请求或读取响应头时发生错误; #timeout # 在与服务器建立连接,向其传递请求或读取响应头时发生超时; #invalid_header # 服务器返回空的或无效的响应; #http_500 # 服务器返回代码为500的响应; #http_502 # 服务器返回代码为502的响应; #http_503 # 服务器返回代码为503的响应; #http_504 # 服务器返回代码504的响应; #http_403 # 服务器返回代码为403的响应; #http_404 # 服务器返回代码为404的响应; #http_429 # 服务器返回代码为429的响应(1.11.13); #non_idempotent # 通常,请求与 非幂等 方法(POST,LOCK,PATCH)不传递到请求是否已被发送到上游服务器(1.9.13)的下一个服务器; 启用此选项显式允许重试此类请求; #off # 禁用将请求传递给下一个服务器。 # upstream触发规则配置,满足指定后面的情况才会执行执行upstream规则 # 不建议其它状态进行重试,可能只是服务出现错误,如果重试会造成多次执行,比如多次派车,多次发短信等 # 如果是400系列错误,无论访问多少次也是一样,也不建议添加400系列 proxy_next_upstream error http_502 http_503 http_504; # 使用服务器组进行访问,会根据权值分配对应服务器 # 注意,如果以"/"结尾,nginx会忽略掉location配置的地址 # 例如:https://www.baidu.com/ws/123,忽略掉后,访问到服务的地址为:https://192.168.0.17:8080/123,不忽略的地址为:https://192.168.0.17:8080/ws/123 proxy_pass http://websocket; } } }