Nginx
官方网址:http://nginx.org/en/download.html
Nginx是一个高性能(响应和并发都很快)的HTTP和反向代理web服务器
1、正向代理
正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口
我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。
(1)访问原来无法访问的资源,如google
(2) 可以做缓存,加速访问资源
(3)对客户端访问授权,上网进行认证
(4)代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
2、反向代理:
反向代理(Reverse Proxy)实际运行方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
客户端是无感知代理的存在的,反向代理对外都是透明的,访问者者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。
负载均衡
Nginx负载均衡策略主要有 轮询,加权轮询,最少连接数以及IP Hash。
轮询策略: 实现请求的按顺序转发
加权轮询策略: 请求将按照服务器的设置权重来实现请求转发和处理
最少连接数策略: 请求将转发到连接数较少的服务器上
Ip Hash策略: web服务需要共享session,使用该策略可以实现某一客户端的请求固定转发至某一服务器
动静分离
3、常用命令
./nginx 启动 ./nginx -s stop 停止 ./nginx -s quit 退出 ./nginx -s reload 重新加载配置文件 ps auxlgrep nginx 查看nginx进度
把前端项目部署在 web 服务器中,把后端项目部署在应用服务器中
步骤:
(1)首先下载 nginx,官方网址如下:
http://nginx.org/en/download.html
(2)把它解压到某个位置
打开前端项目,执行 npm run build,等候进程完成。项目的 dist 文件夹下将出现打包好的内容
把这些打包好拷贝进 nginxhtml 下(如果该文件夹里有内容,需要把原来的内容删掉)
(3)配置一下服务器的默认端口,打开 nginxconfnginx.conf,找到 server 的配置处,把 listen 80 改为 listen 8081
注意问题:由于 nginx 无法直接处理 vue 的 history 模式路由,通过地址栏输入地址或刷新页面会导致页面无法访问。
由于输入地址或刷新操作会向服务器发出请求,但我们这个单页面应用表面上像更改了地址,实际上还是通过 js 来控制页面的变化,nginx 上并不存在与请求所对应的页面,也就无法做出响应。
打开 nginx.conf 文件,添加一条 location 配置,同时将原来默认的 location 注释掉:
# location / {
# root html;
# index index.html index.html
# }
location / {
try_files $uri $uri/ /index.html;
}
变量解释
try_files 固定语法
$uri 指代home文件(ip地址后面的路径,假如是127.0.0.1/index/a.png,那就指代index/a.png)
$uri/ 指代home文件夹
/index.html 向ip/index.html 地址发起请求
尝试解析下列2个文件/文件夹(自动分辨出,IP后面的路径是文件还是文件夹), u r i / uri/ uri/uri/,
如果解析到,返回第一个,
如果都没有解析到,向127.0.0.1/index.html发起请求跳转
(4)打开默认首页,在前端 routerindex.js 里添加一条路由:
{
path: '/',
name: 'index',
redirect: '/index',
component: AppIndex,
meta: {
requireAuth: true
}
}
在已登录状态下访问 http://localhost:8081/ 会跳转到 /index,否则会跳转到登录页面。
(5)配置完成后,运行 nginx 根目录下的 nginx.exe 即可,访问 http://localhost:8081/ ,发现自动跳转到了登录界面。



