小言_互联网的博客

【(windows版)nginx反向代理+负载均衡案例】 1.含启动重启和关闭3个脚本 2.vue案例必须修改vue.config.js

365人阅读  评论(0)

----------反向代理的2个案例(代理端口 和 域名)----------

1)去官网下nginx: download 下载windows版本nginx,并写好脚本,总体目录如下:

 StartNginx.bat // 启动脚本


  
  1. @ echo off
  2. echo "nginx start !!!"
  3. nginx.exe -c conf/nginx.conf
  4. pause

ReStartNginx.bat // 修改nginx.conf后重启脚本


  
  1. @ echo off
  2. echo "nginx reload"
  3. nginx.exe -s reload
  4. pause

StopNginx.bat // 关闭脚本


  
  1. @ echo off
  2. echo "nginx stop"
  3. REM 优雅的根据pid文件进行停止,停止后会删除pid,没pid文件就停止不了
  4. nginx.exe -s stop
  5. REM 杀死进程,跟pid无关
  6. taskkill /f /t /im nginx.exe
  7. pause

2)2个案例配置: 修改nginx.conf 反向代理vue的web服务器 和 虎牙域名


  
  1. worker_processes 1;
  2. error_log logs/error.log;
  3. error_log logs/error.log notice;
  4. error_log logs/error.log info;
  5. events {
  6. worker_connections 1024;
  7. }
  8. http {
  9. server {
  10. # web网关入口
  11. listen 6080;
  12. server_name localhost;
  13. location / {
  14. # 配置想要被代理的地址
  15. proxy_pass http://localhost:9528;
  16. # 代理域名的话直接写域名就好
  17. # proxy_pass https://www.huya.com/ruoling;
  18. proxy_set_header Host $host: $server_port;
  19. proxy_http_version 1.1;
  20. proxy_set_header Upgrade $http_upgrade;
  21. proxy_set_header Connection "upgrade";
  22. proxy_set_header Host $host;
  23. proxy_cache_bypass $http_upgrade;
  24. proxy_max_temp_file_size 0;
  25. proxy_buffering off;
  26. }
  27. }
  28. include mime.types;
  29. default_type application/octet-stream;
  30. sendfile on;
  31. keepalive_timeout 65;
  32. }

3)2个案例运行结果

vue的web服务器案例运行结果

修改vue.config.js // 不修改会报错


  
  1. devServer: {
  2. port: port,
  3. open: true,
  4. overlay: {
  5. warnings: false,
  6. errors: true
  7. },
  8. before: require( './mock/mock-server.js'),
  9. // 这行是新增的,不然会报错
  10. disableHostCheck: true,
  11. },

运行 http://localhost:6080/ 运行正常,说明反向代理功能正常

代理虎牙直播运行结果

访问localhost:6080可以看出来,已经代理到虎牙了

----------负载均衡案例: node.js web服务器集群----------

nginx.conf


  
  1. worker_processes 1;
  2. error_log logs/error.log;
  3. error_log logs/error.log notice;
  4. error_log logs/error.log info;
  5. pid logs/nginx.pid;
  6. events {
  7. worker_connections 1024;
  8. }
  9. http {
  10. server {
  11. # 相当于网关入口
  12. listen 3000;
  13. server_name 127.0.0.1;
  14. location / {
  15. # 静态文件目录
  16. alias static/;
  17. proxy_set_header Upgrade $http_upgrade;
  18. proxy_set_header Connection "upgrade";
  19. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  20. proxy_set_header Host $host;
  21. proxy_http_version 1.1;
  22. # upstream那个名字决定这里的集群的名字
  23. proxy_pass http://io_nodes;
  24. }
  25. }
  26. # 服务器集群名字
  27. upstream io_nodes {
  28. # 负载均衡策略
  29. ip_hash;
  30. # 服务器集群列表
  31. server 127.0.0.1:6001;
  32. server 127.0.0.1:6002;
  33. server 127.0.0.1:6003;
  34. server 127.0.0.1:6004;
  35. server 127.0.0.1:6005;
  36. server 127.0.0.1:6006;
  37. server 127.0.0.1:6007;
  38. server 127.0.0.1:6008;
  39. }
  40. }

3)使用node.js编写一个web服务器,总体目录如下:

step1: 新建文件夹App

step2: // 初始化出来package.json文件

npm init  

step3: // 安装需要的库

npm install express --save

step4:app.js // 主进程,通过fork去启动其它的进程


  
  1. var fork = require( "child_process"). fork;
  2. var cpuNum = require( "os"). cpus(). length;
  3.  
  4. for( var i = 0; i < cpuNum; i++){
  5.     fork( "./server.js", [ 6001 + i]);
  6. }

step5:server.js // 真实的服务器


  
  1. var express = require( "express");
  2. var app = express();
  3.  
  4. // 从命令行参数解析出端口
  5. var port = parseInt(process. argv[ 2]);
  6.  
  7. // 路由
  8. app. get( "/", function( req, res){
  9.     res. send( "hello:"+port);
  10. });
  11.  
  12. // 启动端口打印下
  13. console. log( "port:", port);
  14. app. listen(port);

操作下来后总体目录如下:

4)负载均衡达到的效果

step1:先启动web服务器

 step2:再访问,发现总是路由到一个ip地址下

 注意:

如果后台的服务器全部挂了,那么访问就会提示:

如果服务器集群比如配置了10台,挂了6台,那么这次请求将会路由到剩余4台中的某一台,然后由于是ip_hash策略,将会一直路由到这一台。

可以看出: 有了nginx, SprintBoot这类服务器的负载均衡将会变得非常容易。


转载:https://blog.csdn.net/themagickeyjianan/article/details/128460020
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场