如何用Nginx解决前端跨域问题

 更新时间:2019年01月15日 08:30:09   作者:海角在眼前  
在开发静态页面时,类似Vue的应用,我们常会调用一些接口,这些接口极可能是跨域,这篇文章主要介绍了如何用Nginx解决前端跨域问题,非常具有实用价值,需要的朋友可以参考下

前言

在开发静态页面时,类似Vue的应用,我们常会调用一些接口,这些接口极可能是跨域,然后浏览器就会报cross-origin问题不给调。

最简单的解决方法,就是把浏览器设为忽略安全问题,设置--disable-web-security。不过这种方式开发PC页面到还好,如果是移动端页面就不行了。

解决办法

使用Nginx转发请求。把跨域的接口写成调本域的接口,然后将这些接口转发到真正的请求地址。

举个栗子

例如我们在开发一个Vue应用。

原先:

调试页面是: http://192.168.1.100:8080/

请求的接口是: http://ni.hao.sao/api/get/info

步骤一:

请求的接口是: http://192.168.1.100:8080/api/get/info

PS:这样就解决了跨域问题。

步骤二:

安装好Nginx后,去到/usr/local/etc/nginx/目录(这是Mac的),修改nginx.conf文件。

步骤三:

把默认的server配置注释掉。

在下面增加:

  server{
    listen 8888;
    server_name 192.168.1.100;
 
    location /{
      proxy_pass http://192.168.1.100:8080;
    }
 
    location /api{
      proxy_pass http://ni.hao.sao/api;
    }
  }

保存后,启动Nginx。

PS:并不需要太了解Nginx的配置,很简单的。

步骤四:

访问: http://192.168.1.100:8888/

搞定。

PS:注意访问的端口是‘8888',有其他域的地址继续加location就行了。

错误示范

我一开始不太懂Nginx的配置,以为可以如下配置。

  server{
    listen 8080;
    server_name 192.168.1.100;
 
    location /api{
      proxy_pass http://ni.hao.sao/api;
    }
  }

之所以这么写,是我认为这样可以让Nginx帮我监听8080的请求,然后只转发匹配的请求。我没有意识到的是Nginx这么写后,是需要占用8080端口的。

既然需要占用端口,那也就不能再被其他相同协议的进程占用,就导致开发的页面无法以8080端口启用。经同事提点,才想起这事情,换下思路,就有了最上面的方法。

总结

其实不仅是在开发调试时候能这么干,在生产环境也能这么玩。利用Nginx转发请求之后,就能够让所要部署的静态页面不需要放在跟请求接口同域的地方。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 一句简单命令重启nginx

    一句简单命令重启nginx

    最近我的多个VPS经常出现502错误,经常需要重启nginx,但网上的很多教程都需要繁琐的启动脚本,远不如apache的重启命令那么简单。
    2010-03-03
  • Nginx实现外网访问内网的步骤详解

    Nginx实现外网访问内网的步骤详解

    外网浏览器与内网是不通的,但是外网与中间过渡服务器是通的,中间过渡服务器与内网服务器是通的,这样在外网访问过渡服务器时,过渡服务器再跳转到后台服务器,本文给大家介绍了Nginx外网访问内网如何实现步骤,需要的朋友可以参考下
    2023-10-10
  • CentOS 7.3.1611编译安装Nginx1.10.3+MySQL5.7.16+PHP7.1.2

    CentOS 7.3.1611编译安装Nginx1.10.3+MySQL5.7.16+PHP7.1.2

    这篇文章主要介绍了CentOS 7.3.1611编译安装Nginx1.10.3+MySQL5.7.16+PHP7.1.2,需要的朋友可以参考下
    2018-01-01
  • nginx rewrite 伪静态配置参数详细说明

    nginx rewrite 伪静态配置参数详细说明

    nginx rewrite 伪静态配置参数和使用例子 附正则使用说明
    2010-05-05
  • 在nginx中设置三级域名的方法示例

    在nginx中设置三级域名的方法示例

    这篇文章主要介绍了在nginx中设置三级域名的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • nginx 某些url只能由特定网段访问

    nginx 某些url只能由特定网段访问

    在一些场景中,我们需要根据客户端的IP地址或网段对访问进行控制,在Nginx中针对某些URL只允许特定网段访问,本文就来介绍一下如何实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • CentOS如何用nginx搭建文件下载服务器

    CentOS如何用nginx搭建文件下载服务器

    Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,这篇文章主要介绍了CentOS用nginx搭建文件下载服务器,需要的朋友可以参考下
    2023-11-11
  • nginx 代理80端口转443端口的实现

    nginx 代理80端口转443端口的实现

    这篇文章主要介绍了nginx 代理80端口转443端口的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 配置Nginx的防盗链的操作方法

    配置Nginx的防盗链的操作方法

    这篇文章主要介绍了配置Nginx的防盗链的操作方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • nginx+rsync+inotify实现负载均衡配置方法

    nginx+rsync+inotify实现负载均衡配置方法

    这篇文章主要介绍了nginx+rsync+inotify实现负载均衡配置方法,需要的朋友可以参考下
    2014-11-11

最新评论