想将 xxxxx.xxx
的请求转发到指定的 IP 地址,而所有其他域名或 URL 仍然访问它们原本的地址,不需要提前知道所有域名或 URL,只需要让 Nginx 处理 xxxxx.xxx
的特殊转发,并在默认情况下将其他所有请求保持为原样。
配置思路
对于 xxxxx.xxx
,想要转发到指定的 IP 地址(例如 192.168.1.100
)。
对于其他域名或 URL,Nginx 只需要将它们原样处理,不需要干涉(即不进行任何转发或修改)。
Nginx 配置
# 针对 xxxxx.xxx 的反向代理
server {
listen 80;
server_name xxxxx.xxx;
location / {
proxy_pass http://192.168.1.100; # 将请求转发到指定的 IP
proxy_set_header Host $host;
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 $scheme;
}
}
# 处理所有其他的请求
server {
listen 80 default_server;
server_name _;
location / {
# 这里不进行代理,直接返回原始请求
proxy_pass http://$host$request_uri; # 保持请求不变,转发给原始地址
proxy_set_header Host $host;
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 $scheme;
}
}
配置说明
server_name xxxxx.xxx
:为xxxxx.xxx
配置一个独立的 server 块。所有请求到xxxxx.xxx
的请求都会被转发到指定的 IP 地址192.168.1.100
。proxy_pass http://192.168.1.100
:将所有访问xxxxx.xxx
的请求转发到 IP 地址192.168.1.100
。server_name _
:使用 _ 作为通配符,匹配所有没有明确指定域名的请求。在这个配置中,Nginx 会将其他所有域名的请求继续转发到它们原来的地址。proxy_pass http://$host$request_uri
:这一行非常关键。它的作用是将请求保持原样,继续代理到客户端请求的原始目标地址:$host
表示客户端请求的域名。$request_uri
表示客户端请求的完整 URL 路径。
这样,所有未明确配置的域名请求将继续按照原本的目标服务器去访问。
总结
通过这种配置,xxxxx.xxx
会被代理到指定的 IP 地址,而其他所有请求,不论是什么域名或 URL,都会继续正常访问原有的服务器地址,无需提前知道它们的域名或路径。