医疗器械外贸网站建设,用asp.net制作一个网站需要多久,seopc流量排名网站,网络设计初步方案包括proxy_pass参数用于配置反向代理#xff0c;指定客户端请求被转发到后端服务器#xff0c;后端地址可以是域名、ip端口URI
代理后端报错提示本地找不到CSS文件、JavaScript文件或图片
例如#xff1a; nginx #xff1a;10.1.74.109 后端服务#xff1a;http://10.1.74.…proxy_pass参数用于配置反向代理指定客户端请求被转发到后端服务器后端地址可以是域名、ip端口URI
代理后端报错提示本地找不到CSS文件、JavaScript文件或图片
例如 nginx 10.1.74.109 后端服务http://10.1.74.109:8082
参数配置
location /harbor {proxy_pass http://10.1.74.109:8082;}访问http://10.1.74.109/zabbix 显示不全提示文件css等静态文件不存在。
原因在于proxy_pass确实指向后端服务器但浏览器加载页面时可能会请求一些静态资源但是这些请求可能不包含/zabbix前缀也可能静态资源是动态生成的因此才会去本地去查找这些文件
例如以上后端登录前访问得地址为http://10.1.74.109:8082/登录成功后得地址为http://10.1.74.109:8082/zabbix.php?actiondashboard.view没有包含/zabbix前缀
如果当后端地址后缀不会发生改变的前提代理,一般来说是正常的
处理方式 使用proxy_set_header设置正确的Host头
location /zabbix { proxy_pass http://10.1.74.109:8082/; #url后面必须加上/proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; keepalive_timeout 500;
}参数含义proxy_set_header Host $host;nginx在转发请求时将Host请求头的值设置为原始请求的主机名和端口后端可能依赖Host头来确定应该提供那些内容proxy_set_header X-Real-IP $remote_addr;X-Real-IP用于设别发起请求客户端的真是IP地址$remote_addr是一个变量包含客户端的IP地址proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;X-Forwarded-For 表示HTTP请求的来源地址用于追踪请求来源$proxy_add_x_forwarded_for 是一个特殊的变量包含原始请求的 X-Forwarded-For 头如果存在的话和客户端的 IP 地址。后端服务器可以看到所有经过的代理服务器和原始客户端的 IP 地址。keepalive_timeout 500;设置长连接超时时间当客户端和服务器之间建立一个长连接后该连接会在设置时间内保持打开状态以便客户端通过相同的连接发送多个请求减少连接开销提高性能
proxy_pass不同写法的影响
客户端请求地址为www.ljx.com/a.html
方式一 proxy_pass http://10.1.1.1;
location /ceshi/
{proxy_pass http://10.1.1.1;...
} 请求地址www.ljx.com/ceshi/a.html代理后地址http://10.1.1.1/ceshi/a.html解释完整的请求URI包括/ceshi/a.html将被发送到后端服务器10.1.1.1。由于proxy_pass没有指定URI部分因此原始请求的URI保持不变。
方式二 proxy_pass http://10.1.1.1/;
location /ceshi/
{proxy_pass http://10.1.1.1/;...
} 请求地址www.ljx.com/ceshi/a.html代理后地址http://10.1.1.1/a.html解释由于proxy_pass后面有一个斜杠/nginx会忽略原始请求URI中的/ceshi/部分只保留a.html部分并将其发送到后端服务器
方式三 proxy_pass http://10.1.1.1/index/;
location /ceshi/
{proxy_pass http://10.1.1.1/index/;...
} 请求地址www.ljx.com/ceshi/a.html代理后地址http://10.1.1.1/index/a.html解释原始请求的URI中的/ceshi/被替换为/index/然后发送到后端服务器。路径的其余部分a.html保持不变
方式四 proxy_pass http://10.1.1.1/somepath;
location /ceshi/
{proxy_pass http://10.1.1.1/somepath;...
} 请求地址www.ljx.com/ceshi/a.html代理后地址http://10.1.1.1/somepath解释无论原始请求的URI是什么都会被完全替换为proxy_pass后面指定的URI在这里是/somepath。查询字符串如果有的话也会被忽略