顯示具有 multiple 標籤的文章。 顯示所有文章
顯示具有 multiple 標籤的文章。 顯示所有文章

2016年1月28日 星期四

Nginx 支援多網域 Access-Control-Allow-Origin 設定方式

原先 Access-Control-Allow-Origin 只能支援一個指定網域或 "*" 的設定,想要支持多網域設定時,就來用一下 nginx 的變數吧!

set $access_control_allow_origin "www.changyy.org";
if ($http_host ~ ^(.*\.changyy\.org)$ ) {
set $access_control_allow_origin $1;
}
if ($http_referer ~ ^(https*\:\/\/.*\.changyy\.org)\/ ) {
set $access_control_allow_origin $1;
}
add_header Access-Control-Allow-Origin $access_control_allow_origin;
add_header Access-Control-Allow-Methods "GET, OPTIONS, POST, HEAD, DELETE, PUT";
add_header Access-Control-Allow-Headers "Authorization, X-Requested-With, Content-Type, Origin, Accept";
add_header Access-Control-Allow-Credentials "true";
add_header Access-Control-Max-Age: 86400;


如此一來,只要是 *.changyy.org 的都可以支援啦!同理就可以用在多網域得設置。

若需要支援不同網域以及非預設的 web port ,則要把規則改成:

set $access_control_allow_origin "www.changyy.org";
if ($http_host ~ ^(.*\.changyy\.org(:[0-9]+)*)$ ) {
set $access_control_allow_origin $1;
}
if ($http_referer ~ ^(https*\:\/\/.*\.changyy\.org(:[0-9]+)*)\/ ) {
set $access_control_allow_origin $1;
}

2015年5月7日 星期四

Javascript 開發筆記 - 使用 Yuotube Player API for iframe Embeds 將 videos 串成 playlist

透過 Youtube Player API 可以動態把一堆 Youtube video 串成一個 playlist 來播放。網路上不少範例,但很少看到處理多則 video 的方式,有也是一則 video 搭配一個 player 架構,摸了一下終於搞懂其設計架構,片段程式碼:

<div id="player"></div>
<script>
var player;
var videos = ['LzHFD1sEqpE', 'iV8JDbtXZm4', '-sjfQWGkGF4'];
(function() {
if (videos.length) {
var tag = document.createElement('script');
tag.onload = function() {
YT.ready(function() {
player = new YT.Player('player', {
playerVars: {
playlist: videos.join(","),
}
});
});
}
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
}
})();
</script>


更多資訊請參考:https://developers.google.com/youtube/iframe_api_reference

2015年3月24日 星期二

AWS 筆記 - Amazon EC2 一台機器綁定多組 Public IP


我原先以為只要增加實體網卡,接著從 Elastic Public IP 綁定即可,但結果一直不通,搞了一陣子終於搞懂流程了 XD 關鍵的地方在於只能用在一張實體網卡上,透過 Secondary IP addresses 機制,給予多個 public ip,這可能跟 AWS routing 本身設計有關。

總之,紀錄一下成功的步驟:
  1. 開機器過程中,在 Configure Instance Details -> Network interfaces 中,記得要使用 Secondary IP addresses ,如果打算讓一台機器綁定多組 public ip,則可以依據你要增加的 Public IP 數量進行,例如預計這台機器有 3 組 Public IP,那就是需增加兩組 Secondary IP addresses。(如果機器已開啟,則可以透過 Amazon EC2 Web UI -> Instances -> 查看 Description -> 挑選 Network interface -> 點擊 Interface ID -> Actions -> Manage Private IP Addresses -> Assign new IP)
  2. 在 OS 層新增虛擬網卡,我在 Amazon 提供的 Ubuntu 14.04 中,採用 static 的用法。
  3. 接著,在 Amazon EC2 Web UI -> Elastic IP -> Allocate New Address 後,再來接著 Associate Address -> 在挑選要綁定的 Private IP address -> Associate


以上就收工了,大不了第二步需要重開機一下。以下是第二步在 Amazon Ubuntu 14.04 64Bit 操作流程:

$ cat /etc/network/interfaces.d/eth0.cfg
# The primary network interface
auto eth0
iface eth0 inet dhcp

$ ifconfig
eth0    
          inet addr:172.##.##.##  Bcast:172.##.##.255  Mask:255.255.240.0
$ sudo vim /etc/network/interfaces.d/eth0.cfg
auto eth0
iface eth0 inet dhcp

auto eth0:0
iface eth0:0 inet static
address EC2-Private-IP
netmask 255.255.240.0

$ sudo ifup eth0:0
$ ifconfig
eth0    
          inet addr:172.##.##.##  Bcast:172.##.##.255  Mask:255.255.240.0
eth0:0  
          inet addr:172.##.##.##  Bcast:172.##.##.255  Mask:255.255.240.0