Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

標籤: 分享

Nginx URL rewrite for REST API in subfolder

Posted on 2017 年 7 月 14 日2021 年 3 月 12 日 By 日落 在〈Nginx URL rewrite for REST API in subfolder〉中尚無留言

一般來說,要讓 Nginx 遇到 PHP 程式時,只要按照以下寫法就可以將 request 轉接給 php-fpm 處理:

server {
    location / {
        try_files $uri $uri/index.html =404;
    }

    location ~ .php* {
        root /home/www/data;

        include        fastcgi_params;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    }
}

假設 project 在 document root (如上面的就是 /home/www/data),設定方式其實不難,網路到處都可以找的到。像是 Laravel 可以參考 pretty URL 的設定方式,把 index.php 隱藏起來:

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

上面這個設定,可以讓 request 從「http://my.site/user/1」,被改寫為「http://my.site/index.php/user/1」,這個時候 index.php 就可以從 $_SERVER 的參數來判斷到底要走哪個 route。

但假設寫的專案沒有一個 domain name、沒辦法做 virtual host,可以讓專案根目錄當作 document root,且新的 PHP framework 都會把 index.php 放在 /public 目錄下來避免安全問題,這樣的 URL rewrite 就會出問題。

例如今天的 request 是「http://my.site/project/user/1」,在經過上面的 route 以後會被轉成「http://my.site/index.php/project/user/1」,而實際上我們需要的是「http://my.site/project/index.php/user/1」才能讓專案正確運作。

這時需要另外建立 route 規則。先把 http://my.site/project 對應到的正確檔案路徑設定好:

location ^~ /project {
    # define script real path
    alias /home/www/data/project/public;

    try_files $uri $uri/ /project/public/index.php$uri;
}

到這邊算是設定完成一半,暫停來看一下目前 routing 的情況。請求「http://my.site/project/user/1」會被轉換為「http://my.site/project/public/index.php/project/user/1」。index.php 後半部的參數差了一點點,把「project/」片段拿掉就完成了。

這時我們再新增一條規則,使用 REGEX 來處理後面這段參數:

location @project-rule {
    # 若 URI 起始為 /project/
    # 把後面的參數抓出來,放在 /project/public/index.php/ 後方 
    rewrite ^/project/(.*)$ /project/public/index.php/$1 last;
}

調整後,完整的 Nginx URL rewrite 規則會長這樣:

location ^~ /project {
    alias /home/www/data/project/public;

    # 一般規則無法正確找到路徑
    # 就使用 @project-rule 規則來做查詢
    try_files $uri $uri/ @project-rule;
}

location @project-rule {
    rewrite ^/project/(.*)$ /project/public/index.php/$1 last;
}

Nginx 的 rewrite rule 實在很難 debug,這段是自己花了數小時嘗試錯誤並觀察 $_SERVER 參數變化才找到規律的,希望多少對大家有一點幫助。

Tags:Nginx, PHP, 分享, 資訊學習

天興搬家公司 與 崔媽媽基金會

Posted on 2017 年 7 月 2 日2021 年 3 月 12 日 By 日落 在〈天興搬家公司 與 崔媽媽基金會〉中尚無留言

獲得了一個在新竹工作的機會,六月初從高雄搬家至新竹。在 PTT MoveHouse (搬家) 板上面一直找不到中意的搬家服務,最後在 play.google.com 上面亂找,發現有個 app 叫做「搬家 Easy Go」,列出由崔媽媽基金會評鑑、審核過的搬家公司,於是挑了高雄離家比較近的「天興搬家公司」來協助這次的旅程。

透過網頁上的聯絡方式打電話給高雄經理,經理聽過我的行李數量以後,說大概只需要用最小的卡車 (好像是 3 頓的那型) 半車就可以裝完,且早上八點上車以後,中午過後便可在新竹卸貨,開價是 12000。只要我在早到公司去做確認並簽約即可,費用則是搬家之後才收。

搬家當天遇到鋒面過境下大雨,意料之外的是快遞士大哥居然有準備封膜,把我的電腦椅和幾件重要家具都先包好,上推車以後在蓋一層防水布運送上卡車,全程都不需要我出力,大哥一個人就搞定了。由於雨勢過大,拿行李到高鐵上新竹花掉的時間可能比卡車還要慢,所以就搭了大哥的順風車。

大哥沒啥不良嗜好,也蠻聊的開的,開車也很穩,幾乎不太需要擔心。新竹下車時沒有下雨,一下子就把行李搬進房間,最後付款並填寫問卷。


車上有像大哥詢問了崔媽媽基金會和搬家公司有什麼關連。原來崔媽媽基金會成立主要是用來協助搬家公司建立完整的安全制度,包括各家搬家公司遇到的問題,像是如何固定家具才不會在運送途中損壞,雨天注意事項,或是需要使用吊車來協助家具進出時的安全規範,以及定期為搬家公司建立教育訓練,訓練及驗收。客戶也可以透過崔媽媽基金會找到有保障的搬家公司。

所以可以確定的是,有經過崔媽媽基金會認可的搬家公司,不會遇到家具搬到不見、損毀找不到地方求償、或是搬家後隨意加價等問題的發生,整個交易比較有保障。

以這次的經驗,以後有需求應該也會透過崔媽媽基金會來尋找搬家公司協助搬運。

Tags:分享, 生活雜記

「全勤獎」真的對公司也對員工都很好嗎?

Posted on 2017 年 7 月 2 日2021 年 3 月 12 日 By 日落 在〈「全勤獎」真的對公司也對員工都很好嗎?〉中尚無留言

全勤獎目的是為了讓員工可以盡量員工準時上下班,也盡可能安排假期能考慮到公司的時程。之前和同事討論以後有了不一樣的看法,全勤獎也有可能帶來負面的效果。

以一個工勤的上班族來說,通勤這段時間是完全無法預測的,塞車不說,如果遇到交通事故、或是道路維修等狀況,根本無法預期會花多久的時間到達公司。如果為了預防這樣意外發生而提早出門,自己的生活時間就少了一小時,或是更多,但是公司並沒有補貼這些通勤時間。

另外一個上班族可能的想法,就是在運輸工具上節省通勤時間,也就是「飆車」。但大家也應該都知道飆車的副作用是什麼,遭警察開罰單,或是因此發生交通事故導致無法繼續原來的工作 (住院,或是永久的身體傷害)。

這樣全勤獎的負面效果,似乎比正面效果來的還要大許多,那是否可以用其他方法來取代全勤獎的目的呢?

Tags:分享, 生活雜記

GRw – Fallen Ghosts

Posted on 2017 年 6 月 11 日2021 年 3 月 12 日 By 日落 在〈GRw – Fallen Ghosts〉中尚無留言

只想罵一下,沒想到 DLC 只是拿原本破壞遊戲平衡最主要的聯合軍做修改,變成五大步同兵種,而且聯合軍攻擊等級還維持在四個。

遊戲第一個任務完成以後,看起來玩法一樣是蒐集情報、升級武器零件、解開任務,沒有什麼特殊改變。花錢買 DLC 感覺浪費前虐自己而已。
Tags:分享, 生活雜記, 遊戲

茂林 尾寮山 攻頂分享

Posted on 2017 年 5 月 5 日2021 年 3 月 12 日 By 日落 在〈茂林 尾寮山 攻頂分享〉中尚無留言

茂林的尾寮山算是小百岳之一,海拔不高,但是攀升高度也有 1000m 以上,被不少山青、山友當作練功房。

尾寮山前半幾公里都是大石頭路,不算難走,可以很快走過去,累了可以停下來看看風景。

由於上山時都是大好天氣,沒什麼降雨,所以路上幾個出水口都沒有山泉水可以引用。所以自己帶上山的簡易濾水器反而沒機會使用:

這次希望可以快速來回,所以包背沒帶什麼茶具也沒瓦斯爐,主要就是一些基本補充體力的營養品,以及當作午餐的總匯三明治。

粉狀的 FIN,加水以後變成運動飲料
聽說可用來補礦物質和電解質
這蠻常看到的應該不用解釋
後來另外塞了幾條咖啡廳留下來的砂糖包當熱量補給

黑糖 + 澱粉,原本用來預防中暑,原理其實就是補充熱量和礦物質
(黑糖非精鍊糖,有礦物質)

前面 6k 基本上爽爽走,過了出水口以後就開始是山路,且坡度越來越陡,建議帶一支登山杖當作輔助,另外一隻手服著路邊的岩石或是繩索穩定重心。

過了出水口的第一個休息點是「觀景亭」,這邊有椅子和小棚子,如果腳底已經會酸的話可以坐下來按摩或拉拉筋。

接下來一路都是抖坡,到了「觀雲台」時差不多是 8k 左右,那時海拔已經有 1100m 了,溫度也會比山下低了幾度,夏天是吹風乘涼的好地方,冬天則要小心感冒。

匾額下有個溫度計,可以看看和平地差了幾度

觀雲台距離三角點剩下 1k,但最後一段路其實才是最長的一段路。人少且植披很濃密,所以陽光幾乎照不到地面,及使沒有下雨路面也是濕滑的。如果沒有登山專用的鞋子在這段路很容易打滑受傷,請務必小心。

如果熬過最後一段,就可以看到三角點了 & 恭喜解所新的成就~


登山步道的入口其實有很多個,我是直接從茂林遊客中心附近的入口上山,另外也可以從大津瀑布那邊接到尾寮山登山步道。

以下是坡度計,大概可以看到最後一段路的坡度最抖:

Tags:分享, 旅遊, 生活雜記

文章分頁

上一頁 1 ... 11 12 13 ... 59 下一頁

其他

關於我  (About me)

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.