ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

nginx部署前端 + gateway网关(2个节点,prod建议负载均衡部署, 而非主备)

nginx部署前端 + gateway网关(2个节点,prod建议负载均衡部署, 而非主备) zuul网关已淘汰用户在前端页面点击请求 到nginx根据upstream配置的后端服务器 ip端口 和 location匹配规则 负载到后端。nginx.conf 配置文件dependencies dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-starter-gateway/artifactId /dependency !-- 虽然spring-cloud-starter-gateway里面有spring-cloud-starter-loadbalancer, 但scope是optional 不会传递给子工程, 所以需要显示的引用spring-cloud-starter-loadbalancer -- dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-starter-loadbalancer/artifactId /dependency dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId /dependency dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-starter-bootstrap/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-actuator/artifactId /dependency dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-nacos-config/artifactId /dependency /dependenciesspring: application: name: gateway profiles: active: dev cloud: gateway: discovery: locator: enabled: true routes: - id: project-user-web uri: lb://project-user-web predicates: - Path/user-web/** filters: - StripPrefix1 # 去掉第一段路径即去掉/api然后转发到服务#指定用户,避免权限问题 user root; #user nobody; #工作线程程数 一般建议设置为CPU的核心数8核cpu就设置8。可以使用auto值让Nginx自动检测。 worker_processes auto; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { # 指定了每个工作进程最多可以处理的连接数。默认值是 1024这意味着每个 worker_process 可以处理最多1024个连接 worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; # keepalive_timeout默认就是75s,服务器端的超时时间是65秒 keepalive_timeout 65; #gzip on; # 负载均衡配置 upstream gateway_servers { # 30秒失败3次则Nginx会将该服务器标记为不可用30s,等30s后再次尝试转发请求如果成功则恢复该服务器为可用状态 # 默认max_fails1 fail_timeout10s 这里gateway部署的ip 不能加 http:// server gateway部署的ip1:18080 max_fails3 fail_timeout30s; server gateway部署的ip2:18080 max_fails3 fail_timeout30s; # 负载均衡策略,默认是轮训,多个server逐个访问;ip_hash意思是每个ip访问的后端是固定的 # ip_hash; } server { client_max_body_size 500M; listen 80; # 此处换为生产的域名bigdata.winneryun.com (注意server_name一定不要带http://), 对外提供的接口通过 http://域名/myService1Api/getToken 来访问接口, 如果配置了gateway网关, 访问的url也不会变 server_name localhost; charset utf-8; location /myService1Api/ { # 转发到网关集群 proxy_pass http://gateway_servers/my-service1/; # 只保留必要的请求头 proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; } location /myService2Api/ { # 转发到网关集群 proxy_pass http://gateway_servers/my-service2/; # 只保留必要的请求头 proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; } location / { root /app/dist; index index.html index.htm; try_files $uri $uri/ /index.html 404; } error_page 500 502 503 504 /50x.html; location /50x.html { root html; } } }负载均衡效果 1ip_hash依据ip分配方式指定负载均衡器按照基于客户端IP的分配方式这个方法确保了相同的客户端请求一致发送到相同的服务器以保证session会话。这样每个访客都固定访问一个后端服务器可以解决session不能跨服务器的问题。 upstream ruoyi_admin_server_group { #ip_hash; server localhost:8080; } upstream [服务器组名称]{ ip_hash; server [IP地址]:[端口号]; server [IP地址]:[端口号]; } 2轮询最基本的配置方法是upstream模块默认的负载均衡策略。每个请求会按时间顺序平均分配到不同的后端服务器。 upstream [服务器组名称]{ server [IP地址]:[端口号]; server [IP地址]:[端口号]; } 3weight权重方式在轮询策略的基础上指定轮询的几率。也可以认为是在轮询的基础上新增了一个weight的参数此参数指定轮询的几率值为number。 upstream [服务器组名称]{ server [IP地址]:[端口号] weight2; server [IP地址]:[端口号] weight8; }
返回列表