到目前为止,就完成了登陆,需要用http-server在一个端口(例如8000端口)拉起html的静态页面,然后再html中访问我们使用nodejs写的后台程序(例如8081端口)进行前后端联调,因为端口不一致,http请求时跨域的,所以我们就需要使用nginx做反向代理,来解决跨域的问题…
本篇幅主要的技术点
[❌] 使用node原生http模块搭建http-server
[❌] 使用nodemon处理热加载
[❌] 使用cross-env处理不同操作系统环境变量(通过nodejs的process全局变量的process.env.NODE_ENV就可以获取)
[❌] 使用querystring处理get请求的参数
[❌] 使用promise的方式获取post请求body参数的获取
[❌] 使用es6 Class的方式定义响应数据的基础格式,然后对成功响应和失败响应extends基础格式
[❌] mySql常用操作汇总
[❌] nodejs链接本地mysql数据库响应客户端请求
[❌] 登陆校验/登陆信息存储
[❌] nodejs链接redis数据库
[✔] nginx的配置反向代理
[❌] 日志管理
[❌] 信息安全(sql注入/xss攻击/md5信息加密)
nginx简介
1.nginx是一个高性能的Web服务器和反向代理服务器,也可作为电子邮件代理服务器。
2.在连接高并发的情况下,nginx是Apache服务不错的替代品,能够支持高达 50,000 个并发连接数的响应。
3.一般做静态服务和负载均衡.
正向代理与反向代理
1.反向代理:对客户端不可见的代理
是指以代理服务器(例如nginx服务器)来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回到Internet上请求连接的客户端,此时代理服务器对外表现为一个反向代理服务器。
2.正向代理:客户端可以控制的代理
正向代理,是在用户端的。是指用户无法访问某网站,但是可以访问某代理服务器,而代理服务器可以访问该网站。于是用户通过访问代理服务器去访问该网站,代理服务器把响应信息返回给用户。
3.反向代理中用户访问的IP和端口是nginx服务器的,不知道提供服务的底层服务器,底层服务器在内网中,对外公开的是nginx服务器,nginx充当中间层。
4.而正向代理中用户是知道目标服务器的域名信息的,只是迫于网络的限制无法访问,如最常见的访问外网。
配置nginx

1
2
3
4nginx -t //测试配置文件是否正确
nginx -s reload
nginx start
nginx stop
可以再window下配置bat结尾的脚本文件
start.bat
1
2
3
4
5@ECHO
start nginx.exe
pausestop.bat
1
2
3
4
5@ECHO
nginx -s stop
pause
配置nginx.conf文件
1 |
|
总结
到此为止,我们就可以在客户端浏览器通过访问nginx服务器的http://localhost:8888访问到这个博客项目了,然后nginx监听8888端口,将前端html页面代理到http:localhost:8081上起的http-server拉起的静态页面,然后静态页面访问localhost:8888/api/xxx/xxx的接口的时候,又被nginx代理到localhost:8000/api/xxx/xxx上的nodejs进程拉起的server上。
因为跨域只是针对客户端访问服务器的,现在通过nginx服务器反向代理,nginx服务器访问别的服务器就不存在跨域限制了…