核心思想:部署页面乛ᴗ乛
FIRST 在树莓派上装置Nginx
1.为什么要装Nginx?
咱们不是要部署页面么?那么问题来了,为啥要用Nginx,或者说,Nginx无能啥?
nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server。
nginx [engine x] 是一个 HTTP 和反向代理服务器、一个邮件代理服务器和一个通用的 TCP/UDP 代理服务器。 —摘自nginx官网
现阶段咱们常常用到反向代理。
那么问题又来了,反向代理是个啥?
proxy 反向代理工具:
随着开发越来越偏差的前后端拆散,咱们在开发中不可避免地会碰到跨域的问题。proxy 就能够完满解决反向代理的问题,作为 webpack-dev-server 的主打性能之一, proxy 能够帮忙咱们代理到任何服务器,解决开发中碰到的跨域问题。 —摘自antd-pro老手须知局部
tips:留神这里的proxy反向代理工具只能解决“开发者环境”中遇到的跨域问题,将我的项目打包后部署时的跨域问题并没有解决—–应用Nginx解决乛ᴗ乛
那么问题又来了,跨域问题是什么?怎么产生的?
跨域的起源是浏览器同源策略的限度。浏览器为了平安,会限度不同源(两个协定名,域名,端口号都雷同的url才是同源)之间的DOM,数据,网络操作。
说得那么简单,简略一点
Nginx相当于一个跳板机,客户端的域名也是Nginx的域名。所以客户端首先拜访Nginx服务器,而后Nginx又把申请转发给服务器。当响应返回的时候又返回给客户端。
其中反向代理最重要的局部便是:匹配+转发
oK,准备常识筹备地差不多了,上面开始装置吧
实际会让你记住你本来记不住的货色乛ᴗ乛
1 装置Nginx
装置Nginx之前,先装置一些依赖
详情请见Nginx在linux上装置之前的筹备工作
(1)装置gcc g++的依赖库
sudo apt-get install build-essential
sudo apt-get install libtool
(2)装置pcre依赖库
sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev
(3)装置zlib依赖库
apt-get install zlib1g-dev
(4)装置ssl依赖库
apt-get install openssl
(5)装置Nginx
sudo apt-get install nginx
装置实现之后,在浏览器输出服务器的IP地址,呈现以下画面阐明Nginx装置胜利
Second 部署页面
装置实现之后理解下nginx的装置地位(每个版本都可能存在差别)
whereis nginx
其中/usr/sbin/nginx 为执行指令所在位置;
/etc/nginx 为nginx配置文件所在位置;
(1)如何部署页面
进入/etc/nginx 文件夹,咱们重点关注sites-available和sites-enabled
翻译过去就是【能够启用的站点】和【曾经启用的站点】
应用FTP工具登录到服务器之后能够看到 sites-enabled 上面默认有一个default,然而下面有一个相似快捷方式的图标,实际上这是一个软链接,链接的文件在 sites-available中
tips:当咱们更改sites-available中的default文件后,会发现sites-enabled中的default文件也同步扭转了
咱们能够间接批改【sites-available】的default 来设置第一个站点,如下就是default 的设置应用vim指令关上的状况(如果不相熟vim指令能够通过FTP工具把这个文件下载下来批改之后再上传)
其中:
1.listen 9999:示意监听9999端口
2.root /var/www/html/bigDataweb :示意站点的目录放在/var/www/html/bigDataweb文件夹上面
然而,当初只是部署了页面,还没有设置反向代理
在没有设置反向代理的状况下,你能看到页面,然而发送的申请会报错乛ᴗ乛
根本配置:
server {
listen 80; #监听端口
server_name 192.168.4.32; #监听地址
root /home/ubuntu/tennis_match_backstage/dist; #/html目录
index index.html; #设置默认页
location ~ /example1/ {
proxy_pass http://127.0.0.1:5000; #申请转向
}
}
location指令阐明:
~ : 示意uri蕴含正则表达式,且辨别大小写。
~* : 示意uri蕴含正则表达式,且不辨别大小写。
= : 示意uri不含正则表达式,要求严格匹配。
特地留神
nginx如何配置代理转发
🆗,在理解Nginx的匹配转发机制后,那么问题来了,哪些要转发?哪些不转发?怎么标识?
一般来讲,要转发的都是发送申请的url,因为发送申请才会呈现跨域问题,呈现跨域问题才会应用反向代理,要须要应用反向代理才会应用Nginx😀
tips:其实这才是正确的逻辑程序(发现问题👉解决问题)
那么,页面url和申请url怎么辨别呢?
不同的我的项目,不同的团队可能有截然不同的办法,大多会抉择加一个字段来标识,正好用来给Nginx匹配
设置实现后,即可应用指令启动服务
sudo /usr/sbin/nginx -t //查看配置是否正确
sudo /usr/sbin/nginx //启动服务
sudo /usr/sbin/nginx -s reload //从新载入配置
其中,运行指令sudo /usr/sbin/nginx时,可能会报错(Address is in use或者 cant bind):
解决方案:
netstat -aptn # 查看端口应用状况
tips:如果没有装置netstat须要先装置netstat,更多具体请自行查阅
sudo apt install netstat
查看端口应用状况,更换配置中所应用的端口
发表回复