之前有聽過 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
1
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 在想看看有空研究