nginx stream负载neo4j 避免随机获取数据问题

  • nginx编译时携带 --with-stream 参数

./configure --prefix=/home/nginx
–conf-path=/home/nginx/nginx.conf
–user=nginx --group=nginx
–with-http_stub_status_module
–with-http_gzip_static_module
–with-http_realip_module
–with-http_ssl_module
–with-luajit --with-http_v2_module
–with-http_drizzle_module
–with-stream

  • nginx配置
# 配置work进程数,一般配置和CPU核心数相等
# 最懒配置,直接系统自动适配
# worker_processes auto;
worker_processes  1;
# 记录错误日志
error_log  logs/error.log;
# 管理进程,有问题就可以直接杀pid
pid        logs/nginx.pid;
# 每个work的最大连接数,可以同时处理多少请求(那总的最大连接数就是 worker_processes * worker_connections)	
events {
    worker_connections  1024;
}
	
http {
	# 日志格式
	log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
	# 日志路径
    access_log  /home/admin/mw/nginx/logs/access.log  main;

	# nginx支持的媒体类型库文件包含:    mime 类型
    include       mime.types;
	# 默认媒体类型类型
    default_type  application/octet-stream;

	# 是否开启高效文件传输
    sendfile        on;
	# 连接超时时间
    keepalive_timeout  65;
	
	# 可选配优化项 begin
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
	gzip on;
    gzip_min_length  5k;
    gzip_buffers     4 16k;
    gzip_comp_level 3;
    gzip_types       text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;
	# 可选配优化项 end

	# 以下配置可以抽取至指定目录中, 方便管理
	# 例:
	# 
	
	# 用于配置负载均衡 可选 begin
    upstream  testLoadBalancing {
	  # 配置可以负载的服务器ip和port
      server   192.168.25.11:8080;
      #server   192.168.25.12:8080;
      #server   192.168.25.13:8080;
    }
	# 用于配置负载均衡 可选 end


	# 一个server标签就是一个独立的虚拟主机站点
    server {
		# 监听的端口号(提供服务的端口号)
        listen       80;
		# 提供服务的域名 主机名 或 IP
        server_name  localhost;
		# 请求寻址( / 表示匹配所有请求)
        location / {
			# 站点目录,相对于nginx的安装目录(一般存放静态资源文件)
            root   html;
			# 默认的首页文件,多个用空格分开
            index  index.html index.htm;
        }

		#出现对应的http状态码使用50x.html回馈
        error_page   500 502 503 504  /50x.html;
		# 使用 = 会优先匹配,优先于 / 的匹配
        location = /50x.html {
			#指定对应的站点目录是名为html文件夹(相对路径,相对nginx)
            root   html;
        } 

		# 请求转发,针对负载均衡 可选 begin
		# 负载均衡需要配置的映射关系,针对mappingURI(对应访问的URI)匹配中,
		# 则进入proxy_pass这个代理,并使用 testLoadBalancing 的负载配置处理这个请求
		location ^~ /mappingURI/ {
			#实际请求地址就是 http://192.168.25.11:8080/mappingURI/跟在mappingURI后面的URI和参数
            proxy_pass http://testLoadBalancing/mappingURI/;
        }
		# 请求转发,针对负载均衡 可选 begin
    }
}

# 该配置与http平级
# neo4j负载
stream {
    upstream neo4j_7687 {
    	# 绑定ip以防查询时, 多台neo4j的id不一致, 导致随机扩展出错误数据
    	hash X-Forwarded-For;
    	#hash X-Real-Ip;
    	# 也可以使用 hostname
        server 192.168.1.102:7687;
        server 192.168.1.103:7687;
    }
    server {
        listen 7687;
        proxy_responses 1;
        proxy_connect_timeout 20s;
        proxy_bind $server_addr:$remote_port;
        proxy_pass neo4j_7687;
    }
}

你可能感兴趣的:(nginx)