(一) 實戰環境配置:hosts文件+nginx模擬多域名
來自: https://segmentfault.com/a/1190000004532670
學習前提
-
你已經知道什么是SSO了
-
了解域名解析流程與hosts文件的作用
-
知道nginx代理的使用
-
會啟動一個web應用(python、java-web、php、node.js等等)
本系列著重于SSO的實現,涉及到的技術主要以推薦閱讀呈現。如果你不懂前提提到的點,可粗略瀏覽本文后去學習下技術細節再回頭看,千萬不要似動非懂的。另外聲明,本實戰是用node.js + express4.x實現的。
hosts文件設置
我們約定如下幾個域名:
-
id.vhost.com sso系統 負責驗證登錄、注冊、修改公共用戶信息
-
music.vhost.com 音樂應用 (同域)
-
note.com 日記應用(跨域)
添加如下內容:
127.0.0.1 id.vhost.com 127.0.0.1 music.vhost.com 127.0.0.1 note.com
nginx代理設置
我們約定這三個server在127.0.0.1上的端口
-
id.vhost.com --> 127.0.0.1:3000
-
music.vhost.com --> 127.0.0.1:3001
-
note.com --> 127.0.0.1:3002
這里放一個參考配置代碼,文件id.vhost.com.conf:
1 server {
2 listen 80;
3 server_name id.vhost.com;
4 charset utf-8;
5 access_log /var/log/nginx/id.vhost.com.log main;
6 location / {
7 proxy_set_header X-Real-IP $remote_addr;
8 proxy_set_header X-Forwarded-For $proxy_add_x_forwarde d_for;
9 proxy_set_header Host $http_host;
10 proxy_set_header X-NginX-Proxy true;
11
12 proxy_pass http://127.0.0.1:3000;
13 }
14 }
其余兩個自行配置
項目初始化
使用 Express Generator 來生成項目
express -e --git id // 我們使用ejs前端模板,同時添加.gitignore文件 express -e --git music express -e --git note
這樣項目就生成完畢了!接下來修改啟動端口。修改每個項目的bin/www文件中的端口設置。分別為3000、3001、3002(上面已經說了)
var port = normalizePort(process.env.PORT || '3000');
然后分別啟動三個項目、以及nginx。在瀏覽器中訪問id.vhost.com、music.vhost.com、note.vhost.com。 如果都成功,配置就完成了!這樣,我們就在本地模擬出了跨域。
反饋
-
請支出錯誤之處、不足需要補充之處好讓我進行修改!
-
大膽說出你的疑問!
</ul> </div>
本文由用戶 Erma60Q 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!