Nginx + Node + Vue 部署初试(2019-03-18修改)

趁着爸妈做年夜饭之前,把之前做的笔记贴出来,新的一年到了,祝大家

New Year's Eve

Rich overnight

Nginx + Node + Vue 部署初试

知乎

个人博客

Github

日常学习笔记

Nginx
  1. 定义

    异步框架的 Web服务器,也可以用作反向代理负载平衡器 , HTTP缓存, 媒体流等的开源软件。它最初是一个旨在实现最高性能和稳定性的Web服务器。除了HTTP服务器功能外,NGINX还可以用作电子邮件(IMAPPOP3SMTP)的代理服务器以及HTTPTCPUDP服务器的反向代理和负载平衡器。

  2. 特点

    • 更快
    • 高扩展性, Nginx的模块都是嵌入到二进制文件中执行
    • 高可靠性
    • 低内存消耗
    • 单机支持10万次的并发连接
    • 热部署, master管理进行与work工作进程分离设计,因此具备热部署功能
    • 最自由的BSD许可协议
  3. 功能

    • 静态服务(css , js , html, images, videos
    • SSLTLS SNI支持
    • HTTP/HTTPS, SMTP, IMAP/POP3 反向代理
    • FastCGI反向代理
    • 负载均衡
    • 页面缓存(CDN
    • 支持gzipexpirse
    • 支持 keep-alive 和管道连接
    • 基于 PCRErewrite 重写模块
    • 带宽限制
    • 基于IP 和名称的虚拟主机服务
    • 支持访问速率、并发限制
    • 反向代理(适用2000WPV、并发连接1W/秒),简单的负载均衡和容错
    • 基于客户端IP 地址和 HTTP 基本认证的访问控制
Mac 安装Nginx
// 推荐使用`brew`, 安装`homebrew`
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
// Homebrew 安装 Nginx 
brew install nginx
// Mac 下 Nginx的目录
cd /usr/local/etc/nginx
ll -al
vim nginx.conf

homebrew详见

cd-nginx

Nginx 参数列表
配置参数属性 解释说明 参数列表
user 设置nginx服务的系统使用用户 nobody(注意:此处用户如果比启动Nginx的用户权限低,你需要使用当前用户重启Nginx)
nginx -s stop 关闭nginx-> nginx 启动-> ps aux | grep nginx查看启动用户
worker_processes 开启的线程数 一般与服务器核数保持一致
error_log 定位全局错误日志文件 错误日志定义等级,[ debug | info notice | warn | error | crit ],debug输出最多,crir输出最少
pid 指定进程id的存储文件位置
worker_rlimit_nofile 指定一个nginx进程打开的最多文件描述符数目,受系统进程的最大打开文件数量限制
events 包含Nginx中所有处理连接的设置
http Nginx http处理的所有核心特性
Event

Nginx是以event(事件)处理模型为基础的模块。它为了支持跨平台,抽象出了event模块。它支持的event处理类型有:AIO(异步IO),/dev/pollSolarisUnix特有),epollLinux特有),eventportSolaris 10特有),kqueueBSD特有),pollrtsig(实时信号),select等。
它的作用是监听accept后建立的连接,对读写事件进行添加删除。事件处理模型和Nginx的非阻塞IO模型结合在一起使用。当IO可读可写的时候,相应的读写事件就会被唤醒,此时就会去处理事件的回调函数。

配置参数属性 解释说明 参数列表
worker_connections 定义每个进程的最大连接数,受系统进程的最大打开文件数量限制 单个后台worker process进程的最大并发链接数 (最大连接数= worker_processes * worker_connections)
在反向代理环境下:
最大连接数 = worker_processes * worker_connections / 4
use 选择一个可用的事件的模型(可以在编译时指定),Nginx会自动选择事件的模型 [ epoll | /dev/poll | poll | eventport | kqueue | select | rtsig ]
multi_accept 一个新连接通知后接受尽可能多的连接 on / off
accept_mutex 开启或者禁用使用互斥锁来打开sockets on / off

Event Use支持的事件模型

events-use

Events详见

HTTP

可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。

配置参数属性 解释说明 参数列表
include 主模块指令,实现对配置文件所包含的文件的设定,可以减少主配置文件的复杂度,DNS主配置文件中的zonerfc1912,acl基本上都是用include语句
default_type 核心模块指令 默认设置为二进制流,也就是当文件类型未定义时使用这种方式
log_format 日志格式的设定 日志格式的名称,可自行设置,后面引用
access_log 引用日志 引用log_format设置的名称
keepalive_timeout 设置客户端连接保存活动的超时时间 0是无限制
sendfile 开启高效文件传输模式 on / off
tcp_nopush 开启防止网络阻塞 on / off
tcp_nodelay 开启防止网络阻塞 on / off
upstream 负载均衡
server Nginx的server虚拟主机配置
Upstream

它的作用是实现在轮询和客户端IP之间的后端服务器负荷平衡。

配置参数属性 解释说明
轮询(默认) 当weight不指定时,各服务器weight相同,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
weight 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况
ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
fair(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配。
url_hash(第三方) 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

weight 默认为1.weight越大,负载的权重就越大。

Nginx Upstream状态

例如:

upstream news {
    server 127.0.0.1:9527 backup;
    server 127.0.0.1:9527 weight=1 max_fails=2 fail_timeout=3;
    ...
}
配置参数属性 解释说明
backup 预留的备份服务器
down 当前的server暂时不参与负载均衡
fail_timeout 经过max_fails 失败后,服务暂停的时间
max_conns 限制最大的接收的连接数
max_fails 允许请求失败的次数

use location:在server中添加

proxy_pass http://127.0.0.1:9527;
// 因为我的API接口是这个,such as /api/profile
// location 具体匹配规则详见后面
location ~ /api/ {
    proxy_pass http://127.0.0.1:9527;
}
Server

配置虚拟主机的相关参数,一个http中可以有多个server

配置参数属性 解释说明 参数列表
listen 监听端口 http -> 80 / https -> 443
server_name 设置主机域名 localhost
charset 设置访问的语言编码
access_log 设置虚拟主机访问日志的存放路径及日志的格式
location 设置虚拟主机的基本信息
Location

配置请求的路由,以及各种页面的处理情况。

配置参数属性 解释说明 参数列表
root 设置虚拟主机的网站根目录 Vue项目的根目录/Users/rainy/Desktop/MyWork/Work/cloudwiz-website/dist
index 设置虚拟主机默认访问的网页 index.html index.htm
proxy 通过不同协议将请求从NGINX传递到代理服务器
  • =: 开头表示精确匹配,如 api 中只匹配根目录结尾的请求,后面不能带任何字符串.
  • ^~ :开头表示uri以某个常规字符串开头,不是正则匹配.
  • ~: 开头表示区分大小写的正则匹配.
  • ~*: 开头表示不区分大小写的正则匹配.
  • / : 通用匹配, 如果没有其它匹配,任何请求都会匹配到.

匹配优先级(高到低)

  1. location =
  2. location 完整路径
  3. location ^~ 路径
  4. location ~,~* 正则顺序
  5. location 部分起始路径
  6. /

详见Location配置

Reverse Proxy

NGINX代理请求时,它会将请求发送到指定的代理服务器,获取响应并将其发送回客户端。可以使用指定的协议将请求代理到HTTP服务器(另一个NGINX服务器或任何其他服务器)或非HTTP服务器(可以运行使用特定框架(如PHPPython)开发的应用程序)。

location  / some / path /  {
    proxy_pass  http://www.example.com:8080;
    
    proxy_set_header  Host  $ host ; 
    proxy_set_header  X-Real-IP  $ remote_addr ;
    
    // 禁用特定位置的缓冲
    proxy_buffering  off ;
    proxy_buffers  16  4k ; 
    proxy_buffer_size  2k ;
    
    proxy_bind  127.0.0.2 ; // IP地址也可以用变量指定
}

将请求传递给非HTTP代理服务器,**_pass应使用相应的指令:

配置参数属性 解释说明 参数列
proxy_pass 将请求传递给HTTP代理服务器
proxy_set_header 传递请求标头 默认情况下,NGINX在代理请求中重新定义两个头字段“Host”和“Connection”,并删除其值为空字符串的头字段。“Host”设置为$proxy_host变量,“Connection”设置为close
proxy_buffering 负责启用和禁用缓冲 on / off
proxy_buffers 请求分配的缓冲区的大小和数量 </
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值