之前有聽過 apache, nginx, frp, caddy server 都能做 web 反向代理
但都沒有實際工作用到
最近因為有搭建 mockapi 和 jboss 想對外測試line webhook
有想到代理對外窗口使用 ngrok
但…反向代理花了不少時間
希望下次複製及所用
這邊應該會以window 環境
畢竟公司開發環境是 window
之前有設定過 caddy server 1.0
反向代理非常好設定
但是從 caddy server 2.0 設定檔完全不會設定
然後 http => https 強制
相關都關不掉,找不到取消方法
只能乖乖用回其他工具
nginx(方便好設定)
nginx (window)
nginx 有 window 免安裝 zip
1 2 3 4
| # 啟動 nginx start nginx # 關閉 nginx ./nginx.exe -s stop
|
反向代理設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| server{ listen 80; # server_name 沒設定localhost 的話,只有 127.0.0.1 連的到 server_name localhost; location /mockapi/ { # 後端的 Web Server, 即真實伺服器: proxy_pass http://127.0.0.1:8081/; # 定義 header 變數, 記錄使用者的 IP proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto; proxy_max_temp_file_size 0; } location /web/ { # 後端的 Web Server, 即真實伺服器: proxy_pass http://127.0.0.1:8080/; # 定義 header 變數, 記錄使用者的 IP proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto; proxy_max_temp_file_size 0; } }
|
參考:Nginx代理proxy pass配置去除前缀 - Ryan.Miao - 博客园
其他反向代理設定
location 要包在 server 裡面
/mockapi/ ==> 127.0.0.1:8081
/web/ ==> 127.0.0.1:8080
相對要連到
test.com/app/xxxxx => http://192.168.154.102/maped_dir/xxxxx
1 2 3
| location /app/ { proxy_pass http://192.168.154.102/maped_dir/; }
|
非常簡單
test.com/app/8081 => http://192.168.154.102:8081
1 2 3
| location ~ ^/app/(.*)$ { proxy_pass http://192.169.154.102:$1; }
|
test.com/app/request/xxxxx => http://192.168.154.102:9999/some_dir/xxxxx
1 2 3
| location ~ ^/app/(.*)$ { proxy_pass http://192.169.154.102:9999/some_dir/$1; }
|
/app/hit/some/request/?name=xxxxx
=> http://192.168.154.102:9999/hit_page.php?path=some/request/&name=xxxxx
1 2 3 4
| location /app/ { rewrite ^/app/hit/(.*)$ /hit_page.php?path=$1 break; proxy_pass http://192.168.154.102:9999/some_dir/; }
|
參考Nginx proxy_pass: examples for how does nginx proxy_pass map the request | Yet Another Summer Rain
frp
之前有有紀錄 frp 內網穿透使用筆記 | 程式狂想筆記
custom_domains、vhost_http_port 都需要設定
custom_domains 就設定 IP 就可以了
參考:七、利用frp 穿透到内网的http/https网站,实现对外开放 - 三度 - 博客园
frps
1 2 3
| [common] bind_port = 7000 vhost_http_port = 80
|
frpc
frpc.ini1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| [common] server_addr = 127.0.0.1 server_port = 7000
[web01] type = http local_port = 8080 custom_domains = 127.0.0.1 locations = /web
[web02] type = http local_port = 8081 custom_domains = 127.0.0.1 locations = /mockapi
|
其他
caddy server
traefik 在想看看有空研究