前言
Nginx是什么
Nginx (engine x)是一个应用c语言开发的轻量级、高性能的http及反向代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官网测试nginx可能支撑持5万并发链接,并且cpu、内存等资源耗费却非常低,运行十分稳固。nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
Nginx能做什么
- HTTP服务器(动静拆散)
Nginx能够作为动态页面的 web 服务器,同时还反对 CGI 协定的动静语言,比方 perl、php等。 示例( mac本地配置 ): server { listen 8080; server_name 127.0.0.1; # 拜访http://127.0.0.1:8080/assets # 相当于拜访 # http://127.0.0.1:8080/data/huodong/src/assets location /assets { root /data/huodong/src/ autoindex on; # 列出目录文件列表 } # 拜访127.0.0.1:8080,则加载huodong我的项目 location / { index index.html; root /data/huodong/dist/; } }
- 反向代理
反向代理,其实客户端对代理是无感知的,因为客户端不须要任何配置就能够拜访,咱们只须要将申请发送到反向代理服务器,由反向代理服务器去抉择指标服务器获取数据后,在返回给客户端,此时反向代理服务器和指标服务器对外就是一个服务器,裸露的是代理服务器地址,暗藏了实在服务器IP地址。示例( mac本地配置 ): 应用 nginx 反向代理,拜访 www.huodong.com 间接跳转到 127.0.0.1:8080 1.本机需配置hosts: sudo vi /etc/hosts 192.168.1.106 www.huodong.com 2. nginx配置 server { listen 80; server_name www.huodong.com; location / { # 192.168.1.106 为本机ip,拜访www.huodong.com的时候,通过proxy_pass 代理到了本机ip的80端口上 proxy_pass http://192.168.1.106; index index.html index.htm; } }
- 负载平衡
负载平衡也是 Nginx罕用的一个性能,当一台服务器的单位工夫内的访问量越大时,服务器压力就越大,大到超过本身承受能力时,服务器就会解体。为了防止服务器解体,让用户有更好的体验,咱们通过负载平衡的形式来分担服务器压力。保障服务器集群中的每个服务器压力趋于均衡,分担了服务器压力,防止了服务器解体的状况。负载平衡配置个别都须要同时配置反向代理,通过反向代理跳转到负载平衡。示例( mac本地配置 ): 应用 nginx 配置负载平衡,次要用到了 upstream、proxy_pass, 负载平衡调配策略次要有以下几种: 1.轮询 upstream upstream_huodong { server 192.168.1.106:8001; server 192.168.1.106:8002; } 2.权重 upstream upstream_huodong { server 192.168.1.106:8001 weight=1; server 192.168.1.106:8002 weight=2; } 3.iphash upstream upstream_huodong { iphash; server 192.168.1.106:8001 weight=1; server 192.168.1.106:8002 weight=2; } 4.起码连贯(least_conn) upstream upstream_huodong { least_conn; server 192.168.1.106:8001 weight=1; server 192.168.1.106:8002 weight=2; } 5.响应工夫 (fair) upstream upstream_huodong { server 192.168.1.106:8001 weight=1; server 192.168.1.106:8002 weight=2; fair; } 拜访 www.huodong.com,nginx会把咱们的申请摊派到多个服务上 1.本机需配置hosts: sudo vi /etc/hosts 192.168.1.106 www.huodong.com 2.在本地新建测试目录文件 mkdir huodong1 touch index.html (I im huodong1) mkdir huodong2 touch index.html (I im huodong2) 3. nginx配置 server { listen 80; server_name www.huodong.com; localtion / { # http://upstream_huodong 为下面的调配策略 proxy_pass http://upstream_huodong; } } server { listen 8001; server_name localhost; localtion / { index index.html; root /data/huodong1/; } } server { listen 8002; server_name localhost; localtion / { index index.html; root /data/huodong2/; } } 这样拜访www.huodong.com,nginx就会依据咱们的调配策略把申请别离打到2个服务下面。
- 正向代理
正向代理服务器位于客户端和服务器之间,为了向服务器获取数据,客户端要向代理服务器发送一个申请,并指定指标服务器,代理服务器将指标服务器返回的数据转交给客户端。
注释
应用Nginx在同一端口下部署多个vue我的项目
比方咱们一个域名端口下有多个我的项目,都是流动相干的,不必每个我的项目都独自起一个端口。示例:
http://localhost:80/huodong1 拜访 huodong1我的项目http://localhost:80/huodong2 拜访 huodong2我的项目
##### 1. 我的项目配置
- huodong1
vue2.0 router.js配置 new Router({ routes, mode: 'history', base: '/huodng1' });vue.config.js配置 const cdnDomain = '/huodong1' module.exports = { publicPath: process.env.ENV === 'production' ? cdnDomain : '/' }
- huodong2
vue3.0 router.js配置 createRouter({ history: createWebHistory('/huodong2'), routes })vue.config.js配置 const cdnDomain = '/huodong1' module.exports = { publicPath: process.env.ENV === 'production' ? cdnDomain : '/' }
打包实现后,查看dist文件下,对应资源目录是否正确增加huodong1/huodong2。
2. Nginx 配置
nginx的目录地位 cd /usr/local/nginx/confvim nginx.conf
server { listen 80; # 监听的端口号 server_name localhost; # ip 域名 location / { root html; index index.html index.htm; } location /huodong1/ { add_header Cache-Control no-cache; add_header Cache-Control private; # huodong1 服务器文件目录 # 应用alias时,开端必须加 '/',否则找不到文件 alias /code/huodong1/dist/; # 这里是须要留神的,vue官网给的是 # try_files $uri $uri/ /index.html; # 这样写刷新的时候加载不到咱们的动态资源 try_files $uri $uri/ /huodong1/index.html; } location /huodong2/ { add_header Cache-Control no-cache; add_header Cache-Control private; alias /code/huodong2/dist/; #huodong2 服务器文件目录 try_files $uri $uri/ /huodong2/index.html; } }
nginx -s reload 重启nginx这样就功败垂成了!
总结
上述只是通过一个日常开发的小例子,心愿可能引起宽广前端童靴对Niginx的趣味。事实上,Nginx不仅仅局限于这些渺小的工作,在理论生产中作用其实更加微小。对于有志于“大前端”的童靴,理解和相熟Nginx相对是必修技能之一。
本文由博客群发一文多发等经营工具平台 OpenWrite 公布