我有nginx反向代理到IIS上的站点,这是我的nginx配置:
更新
upstream backend {
server 43.128.77.101;
}
server {
server_name domain.subdomain.com;
location /products {
if ($query_string ~ Jeans){
return 301 /get-all-products/?filter=jeans;
}
if ($query_string ~ Shirts){
return 301 /get-all-products/?filter=shirts;
}
if ($query_string ~ Hats){
return 301 /get-all-products/?filter=hats;
}
}
location / {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
它通过查询字符串从/products
页重定向到某些URL。但是对于页面/products-available
,它失败并显示错误404。Nginx错误日志包含错误:
“ / usr / share / nginx / html / products-available”失败(2:无此类文件或目录)
页面/products-available
不需要任何重定向。我希望它按原样传递到后端IIS服务器上。如何告诉nginx通过它?我在做什么错了?
谢谢。
答案 0 :(得分:1)
这是因为您只为给定路径(/产品)定义了Nginx的行为。
如果要为与/ products路径不匹配的Nginx请求定义默认行为(例如/ products-available),可以在当前位置部分之后添加以下内容,以将其他任何路径请求代理到其他应用程序/端口。
location / {
proxy_pass http://127.0.0.1:3000;
}
中查看有关向其他应用程序发送请求的更多信息。