解決本地端測試 Firebase Hosting 的兩個大問題:https://localhost和rewrite 到 functions。
安裝 https://localhost
我找到最簡單的方法,就是用 nginx 的 Windows 版本,下載回來後,解到一個自己喜歡,或看起來風水比較好的目錄去。
接下來要用 openssl 產生憑證,我是在 Windows 10 的Alpline WSL裡面,這樣最快了:
apk add openssl
openssl req -new -x509 -sha256 -days 3650 \
-newkey rs a:2048 -keyout ./nginx.key \
-out ./nginx.crt -nodes \
-subj '/C=TW/ST=Taiwan/L=Taipei/O=demo org /OU=demo org unit/CN=localhost'
會在目錄下產生兩個檔案,複製到 nginx 的 conf 目錄底下。
編輯 nginx.conf:
server {
listen 80;
server_name localhost;
return 301 https://$host$request_uri;
}
server {
listen 443;
ssl on;
ssl_certificate D:/nginx/conf/localhost.crt;
ssl_certificate_key D:/nginx/conf/localhost.key;
ssl_ciphers HIGH:!aNULL:!MD5;
server_name localhost;
charset utf-8;
location ~ /ken73chen/search {
if ($query_string ~ "^q=(.*)$"){
rewrite ^ /ken73chen/index.html?q=$arg_q? last;
}
}
location ~ /ken73chen/\d+/\d+/(.*\.html)$ {
proxy_pass https://oolala.xyz;
}
rewrite ^/ken73chen/\d+/\d+/$ /ken73chen/index.html last;
rewrite ^/ken73chen/js/(.*)/(.*\.js)$ /ken73chen/js/$2?$1 last;
rewrite ^/ken73chen/css/(.*)/(.*\.css)$ /ken73chen/css/$2?$1 last;
rewrite ^/ken73chen/search/(.*)$ /ken73chen/index.html?q=$1 last;
location / {
root D:\myproject\firebase\public;
index index.html index.htm;
}
}
重點是!
我的目錄 /ken73chen/0000/00/xxxx.html 是 rewrite 到 functions 去的,我的處理方式是用 proxy_pass 的設定,上述目錄就回到 Firebase 去。
這樣就沒辦法在自己的電腦測 functions 了,因為我目前 functions 用的基礎,對我是不會有困擾。