nginx代理未备案服务器

国内未备案服务器不能通过域名访问,只能通过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;
		}
	}
}
4 个赞

国内服务器,不备案。。很麻烦的

通过ip访问是可以的,也不能买了闲置着。只要nginx能代理通,就一样用,nginx所在服务备案了,或者在国外,局域网都行。

那是当然。。

谢谢你的分享。

试试 cf tunnel

自签名证书,cf上不了,cf上自定义证书很贵的

这个直接改操作系统的hosts也行吧

其实如果你的网站只是个人博客,没有评论功能的话,备案是很快的,大约一周。

改host不行,改这个也相当于域名解析,不过是本地指定的,都会提交域名到服务器的。

国外域名+nginx也不行吗

不看哪的域名,看服务器,你服务器是国内的

好吧,我是有域名,然后直接用的cf的证书+tunnel,家里内网的电脑

这么搞还不如弄国外的

非标端口用cf也不行?cf支持非标端口

国外可以访问的三个了,serv00的s4和s13还有,加上国内的一个,三个不能访问的。用国外的代理这三个。

我是国外服务器内网穿透到国内服务器,从而使用域名访问国内服务器的
缺点是会比较慢

要用域名访问国内的服务器80,443端口,必须要备案的

改host是可以的,host可以改为ip还可以是localhost,其他未测试

刑啊,很刑 :new_moon_with_face: