想看重點的直接挪到文章底部,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"; } }