国内未备案服务器不能通过域名访问,只能通过ip。
本来想通过upstream区分来动态修改host,问的chatgpt,给了两种方式
一种map指令
map $upstream_addr $host_override {
"120.26.81.200" "120.26.81.200";
default "jetbrain.live";
}
和
set $upstream_host ""; # 初始化变量
# 根据 IP 地址设置不同的 Host
if ($upstream_addr = "120.26.81.200:80") {
set $upstream_host "120.26.81.200";
}
这两种都试过,都是无效的,因为$upstream_addr都是空值,无法进行判断,这个值是在代理后才有的,可以写如日志,但是代理之前是空的,我们不能拿来用,现在的办法是单独做一个备案的代理,主代理再去代理这个备案的代理,通过套娃实现。
events {
worker_connections 1024;
}
http {
upstream beian {
server 120.26.81.200:80;
}
upstream licenseServer {
server 127.0.0.1:8080;
server 128.204.223.43:80;
server 128.204.223.96:80;
}
server {
listen 80;
location / {
proxy_pass http://licenseServer;
proxy_set_header Host $host;
}
}
server {
listen 8080;
location / {
proxy_pass http://beian;
proxy_set_header Host "120.26.81.200";
}
}
server {
listen 443 ssl;
ssl_certificate cert/cert.pem;
ssl_certificate_key cert/cert.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
location / {
proxy_pass http://licenseServer;
proxy_set_header Host $host;
}
}
}