想看重点的直接挪到文章底部,nginx反向代理的配置javascript
涉及到先后端开发的项目中,不可避免的涉及到了跨域的问题。跨域,指的是浏览器不能执行其余网站的脚本。php
浏览器的同源策略会致使跨域,这里同源策略又分为如下两种 DOM同源策略:禁止对不一样源页面DOM进行操做。这里主要场景是iframe跨域的状况,不一样域名的iframe是限制互相访问的。 XmlHttpRequest同源策略:禁止使用XHR对象向不一样源的服务器地址发起HTTP请求。 只要协议、域名、端口有任何一个不一样,都被看成是不一样的域,之间的请求就是跨域操做。 所谓同源是指,域名,协议,端口均相同,不明白不要紧,举个栗子: http://www.123.com/test.html 调用 http://www.123.com/test.php (非跨域) http://www.123.com/test.html 调用 http://www.456.com/test.php (主域名不 同:123/456,跨域) http://abc.123.com/test.html 调用 http://def.123.com/test.php (子域名不一样:abc/def,跨域) http://www.123.com:8080/test.html 调用 http://www.123.com:8081/test.php (端口不一样:8080/8081,跨域) http://www.123.com/test.html 调用 https://www.123.com/test.php (协议不一样:http/https,跨域) 请注意:localhost和127.0.0.1虽然都指向本机,但也属于跨域。 浏览器执行javascript脚本时,会检查这个脚本属于哪一个页面,若是不是同源页面,就不会被执行。
1.jsonphtml
使用方式就不赘述了,基本原理就是经过动态建立script标签,而后利用src属性进行跨域,可是要注意JSONP只支持GET请求,不支持POST请求。
2.CORS(跨域资源共享)java
利用nginx或者php、java等后端语言设置容许跨域请求 header('Access-Control-Allow-Origin:*');//容许全部来源访问 header('Access-Control-Allow-Method:POST,GET');//容许访问的方式 今天不做重点介绍
3.服务器代理node
浏览器有跨域限制,可是服务器不存在跨域问题,因此能够由服务器请求所要域的资源再返回给客户端。
4.其余nginx
今天介绍的重点,直接上代码json
这是本地的开发环境nginx的配置 http { client_max_body_size 1024m; include mime.types; default_type application/octet-stream; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 8081; #自身监听8081端口 server_name first; location /apis/xos { #当匹配到/apis/xos 地址是时访问 http://172.99.99.99:31004/ proxy_pass http://172.99.99.99:31004/; } location /apis/rds { #当匹配到/apis/rds 地址是时访问 http://172.88.88.88:20152 proxy_pass http://172.88.88.88:20152/; } location /apis { #当匹配到/apis 地址是时访问 http://172.88.88.88:31002/,一个api地址 proxy_pass http://172.88.88.88:31002/; } location / { proxy_pass http://127.0.0.1:8080; #匹配不到其余地址默认匹配的地址是访问 8080端口,本地node start启动的服务 } } }
服务端的配置大致同样后端
server { listen 80; server_name localhost; location / { root html; #HTML5 History 模式 nginx的配置 try_files $uri $uri/ /index.html; } location /apis/xos { proxy_pass http://172.88.88.88:31004/; } location /apis/rds { proxy_pass http://172.99.99.99:20152/; } location /apis/ { proxy_pass http://172.77.77.77:31002/; } location /index.html { #不容许缓存 add_header Cache-Control " no-store"; } }