开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情
前次实验:我在一个裸的Ubuntu server中做了哪些 ,涉及到环境的配置,以及静态页面的部署。
本次内容主要是nginx设置反向代理,如何进行请求的代理。
proxy_pass
proxy_pass配置有两种情况,路径后面加/
和不加/
,分别就是
# 加 /
http://47.92.126.6:20005/ci/
# 不加 /
http://47.92.126.6:20005/ci
加 /
如果我们请求的是http://47.92.126.6:20005/ci/match/page?total=0¤t=1&pageSize=10
第一种加/
,在进行代理的时候,就不会带上我们匹配到的/ci/
这个路径,只会把我们请求的部分直接放在proxy_pass
后面
我们请求的部分是match/page?total=0¤t=1&pageSize=10
因为我们后面有/
,就不会加上location中需要匹配的字段,直接将两个进行拼接
得到http://47.92.126.6:20005/ci/match/page?total=0¤t=1&pageSize=10
不加 /
http://47.92.126.6:20005/ci
因为我们后面没用加/
,所以会带上我们匹配到的部分
得到http://47.92.126.6:20005/ci/ci/match/page?total=0¤t=1&pageSize=10
这时候我们就配置错误了
一般来讲,要转发的都是发送请求的url,因为发送请求才会出现跨域问题,出现跨域问题才会使用反向代理,要需要使用反向代理才会使用Nginx。
那么,页面url和请求url怎么区分呢?
不同的项目,不同的团队可能有截然不同的方法,大多会选择加一个字段来标识,正好用来给Nginx匹配。我们这里用的就是/ci/
这个字段
部署中小问题
端口的问题
我用的端口是nginx的默认80端口,在修改了default
中文件后
sudo /usr/sbin/nginx -t # 检查配置是否正确
sudo /usr/sbin/nginx # 启动服务
sudo /usr/sbin/nginx -s reload # 重新载入配置
我看输入sudo /usr/sbin/nginx
看终端没有输出,所以又输了一遍那个指令,结果就是显示80
端口已经被绑定了。我开始还以为真的是80
端口被占用了,后面发现我绑定了80
端口两次,当然会报错了啊。
部署静态页面的路径问题
开始的时候我没有把dist静态文件放到ngix本来的html的那个下面,结果一直就是404。后来尝试移到nginx默认的html
目录下面,结果发现可以,是必须要放到这个目录下面吗?如果不是,需要怎么配置呢?
前后端分离部署问题
因为这个项目的前后端是分开来部署的,分别在不同的服务器。我前端做了反向代理,应该配置是没有问题的。但是还是不能请求数据成功,不知道是不是后端也要做相应的配置才可以???待解答!!!