最近在服务器配置nginx路由转发时遇到了一个问题,上代码
upstream halo {
server127.0.0.1:8090;
}
server {
listen80;
listen [::]:80;
server_name ctrl0118.top;
client_max_body_size 1024m;
location /blog {
proxy_pass http://halo;
proxy_set_header HOST$host;
proxy_set_header X-Forwarded-Proto$scheme;
proxy_set_header X-Real-IP$remote_addr;
proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;
}
这样配置完成之后,在浏览器访问时无法访问,百度之后得知,这是路径问题,因此对其进行修改
server {
listen80;
listen [::]:80;
server_name ctrl0118.top;
client_max_body_size 1024m;
location /blog {
proxy_pass http://halo/;
proxy_set_header HOST$host;
proxy_set_header X-Forwarded-Proto$scheme;
proxy_set_header X-Real-IP$remote_addr;
proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;
}
这样配置之后,浏览器可以访问了,看似配置文件只是在proxy_pass 配置反向代理的服务加了斜杠/,这里面有学问
这是因为加了斜杠/之后,在路由转发时不会将location中的参数绑定在url上,没加的话会在转发时将location的路径添加到url一起请求,所以导致浏览器无法访问