如何代理从 url 路径传递到不同 DNS 服务器上的不同子域?
How to proxy pass from url path to different subdomain on different dns server?
假设我的主域在一台服务器上,子域之一在另一台服务器上。
这两个地址都使用 Cloudflare DNS 访问不同的 IP 地址,因此:
example.com
=> ip1
new.example.com
=> ip2
现在我想proxy_pass在example.com
上的某个路径到new.example.com
而不改变url,所以:
example.com/something
应该显示 new.example.com/somethingElse
的内容
这些是我的 nginx 配置文件,问题是如果我将 example.com/something
指向 google.com 甚至是我托管用于测试的 ngrok
服务器,一切正常,但是当我将它指向 new.example.com/something
时,它给了我 502 错误,所以我猜我的 new.example.com
配置有问题。
example.com
配置:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl on;
ssl_certificate /etc/letsencrypt/live/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/key.pem;
server_name example.com www.example.com;
resolver 8.8.8.8;
location = /something {
proxy_set_header X-Forwarded-Host new.example.com;
proxy_set_header Host new.example.com;
proxy_pass https://new.example.com/somethingElse;
}
}
new.example.com
配置:
server {
listen 443;
server_name www.new.example.com new.example.com;
ssl_certificate /etc/ssl/private/cert.pem;
ssl_certificate_key /etc/ssl/private/key.pem;
location / {
proxy_pass http://container-name:80;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
请测试服务器之间的连接。登录 example.com 服务器并将 CURL 请求发送到新的 example.com 服务。
看起来 example.com 服务器无法访问新的 example.com 服务器。
请检查nginx服务日志。
满足您要求的另一个选择是 cloudflare worker 服务。
假设我的主域在一台服务器上,子域之一在另一台服务器上。
这两个地址都使用 Cloudflare DNS 访问不同的 IP 地址,因此:
example.com
=> ip1
new.example.com
=> ip2
现在我想proxy_pass在example.com
上的某个路径到new.example.com
而不改变url,所以:
example.com/something
应该显示 new.example.com/somethingElse
这些是我的 nginx 配置文件,问题是如果我将 example.com/something
指向 google.com 甚至是我托管用于测试的 ngrok
服务器,一切正常,但是当我将它指向 new.example.com/something
时,它给了我 502 错误,所以我猜我的 new.example.com
配置有问题。
example.com
配置:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl on;
ssl_certificate /etc/letsencrypt/live/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/key.pem;
server_name example.com www.example.com;
resolver 8.8.8.8;
location = /something {
proxy_set_header X-Forwarded-Host new.example.com;
proxy_set_header Host new.example.com;
proxy_pass https://new.example.com/somethingElse;
}
}
new.example.com
配置:
server {
listen 443;
server_name www.new.example.com new.example.com;
ssl_certificate /etc/ssl/private/cert.pem;
ssl_certificate_key /etc/ssl/private/key.pem;
location / {
proxy_pass http://container-name:80;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
请测试服务器之间的连接。登录 example.com 服务器并将 CURL 请求发送到新的 example.com 服务。 看起来 example.com 服务器无法访问新的 example.com 服务器。 请检查nginx服务日志。
满足您要求的另一个选择是 cloudflare worker 服务。