错误日志
2024/01/11 05:29:22 [error] 29#29: *44 no resolver defined to resolve www.test.com, client: 127.0.0.1, server: _, request: "GET /test/123 HTTP/1.1", host: "127.0.0.1:8080"
nginx配置
server {
listen 8080;
server_name _;
location ~ ^/test/(.*)$ {
proxy_set_header Host www.test.com;
proxy_pass https://www.test.com/$1;
}
网上搜索说是要手动指定resolver 8.8.8.8,但是此配置是放在docker镜像中的,有些业务地址需要走自己的dns解析,肯定不能写死。于是又去查找能不能让resolver自动读取/etc/resolv.conf,发现需要加脚本。所以我在想,这么基础的功能需要配置的这么麻烦吗?
好像以前也是直接写域名就可以用的。等等,好像不太一样,这次域名后面加了$1
这种模式下是不是也可以把$1加到域名里呢?此时的域名变成了变量域名,性质发生了变化。
所以这里虽然写的是静态域名,而nginx已经一刀切的认为是变量域名了,从而需要手动指定resolver才能工作。
那得想办法让nginx认为我这个域名不会发生变化,我想到了upstream
upstream baidu {
server www.test.com:443;
}
server {
listen 8080;
server_name _;
location ~ ^/test/(.*)$ {
proxy_set_header Host www.test.com;
proxy_pass https://test/$1;
}
结果测试成功。
小插曲:
2024/01/11 05:54:37 [error] 454#454: *790 SSL_do_handshake() failed (SSL: error:1408F10B:SSL routines:ssl3_get_record:wrong version number) while SSL handshaking to upstream, client: 127.0.0.1, server: _, request: "GET /test/123 HTTP/1.1", upstream: "https://193.169.203.141:80/123", host: "127.0.0.1:8080"
发现proxy_pass在以https方式访问80口,是因为upstream默认使用80端口,手动指定即可
upstream test {
server www.test.com:443;
}
标签:www,resolve,no,defined,server,域名,resolver,upstream,test
From: https://www.cnblogs.com/shn7798/p/17975599/nginx-fan-xiang-dai-li-shi-baono-resolver-defin