今天想着要把自己做的那个Demo部署到服务器上,却发现在本地可以正常代理的请求,在经过打包部署后,api请求代理似乎已经失效了。花了很久的时间在解决这个问题,最后特别感谢某修给予的灵感以及学长的耐心解答,为了便于以后更方便地使用,我将之记录下来,也希望能够对大家有所帮助~
前言
在云服务器上,我使用了nginx作为我的web服务器,nginx 作为目前最流行的web服务器之一,可以很方便地实现反向代理。当在一台主机上部署了多个不同的web服务器,并且需要能在80端口同时访问这些web服务器时,可以使用 nginx 的反向代理功能: 用 nginx 在80端口监听所有请求,并依据转发规则(比较常见的是以 URI 来转发)转发到对应的web服务器上。
在我的项目中,是因为所需要请求的API位于服务器上的不同端口,为了实现跨域请求,所以需要进行代理。
代理
我的服务器域名为qq.qiuruolin.cn
不带URI的代理配置
1 | http { |
以上的配置会 http://qq.qiuruolin.cn/api 下的请求( GET 和 POST 请求都会转发)转发到 http://qq.qiuruolin.cn:3000/
需要注意的是,在以上的配置中,http://qq.qiuruolin.cn:3000是没有指定URI的。
如果代理服务器地址中是带有URI的,此URI会替换掉 location 所匹配的URI部分。
如果代理服务器地址中是不带有URI的,则会用完整的请求URL来转发到代理服务器。
带URI的代理配置
1 | http { |
举🌰:
不带URI
http://qq.qiuruolin.cn/api/user/register-> http://qq.qiuruolin.cn:3000/api/user/register带URI
http://qq.qiuruolin.cn/api/user/register-> http://qq.qiuruolin.cn:3000/uri/user/register
总结
这次在服务器上的代理,开始的时候真的让我感觉到很混乱,以此博客纪念曾经混乱的自己~希望对大家有所帮助~继续努力!!!