回答
收藏
分享
举报
Nginx反向代理路径中有问号、井号问题
提问于2020-09-28 09:40

浏览 5.2k

文章标签

问题描述:

想要通过代理转发路径到后台的服务器,但是路径有包含有问号和井号,问号的问题,通过$query_string可以解决,但是井号一直解决不了。

只带问号的路径:

http://192.168.113.138:10080/test_elap/?/id=544422

通过此配置解决:

location ~* /test_elap/ {
    proxy_pass http://192.168.113.125:680/?$query_string;
    index index.html;
}

服务器被访问路径:

GET /?/id=544422

以上为自己摸索的配置。

带井号的路径:

http://192.168.113.138:10080/test_elap/?#/id=544422

想实现效果:

GET /?#/id=544422

请问,可以通过什么配置解决嘞?

已修改于2023-03-13 18:58



写下您的回答
发表回答
全部回答(1)

按点赞数排序

按时间排序

URL必须符合规则,基于规则,/id=544422是fragment,而浏览器是不会将fragment发送给服务器的,因此所有广为使用的代理服务器都不会转发#后的fragment,Nginx的任何变量也取不到它,这更多是从web安全问题角度出发的。如果你确实想把#号传给上游,应当在请求端做URL编码,不把/id=544422当成fragment


赞同

1

回复举报

回答于2020-09-30 10:35



回复陶辉
回复
好的好的,谢谢,陶老师

0

回复举报

回答于2020-10-09 01:11



回复像雾像雨又像风
回复
提问者
像雾像雨又像风
这家伙很懒还未留下介绍~
3
文章
5
问答
0
粉丝
相关问答

使用keepalive建立长连接池:

upstream http_backend {
    server 127.0.0.1:8080;

    keepalive 16;
}

server {
    ...

    location /http/ {
        proxy_pass http://http_backend;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        ...
    }
}
点赞 0
浏览 1.4k

可以这么进行调试:
1. error_log 等级设置为 debug
2. 在日志中找到“http init upstream“的字样,然后往下找会看到nginx想后端发送的http请求,可以从这个请求构造curl命令直接访问后端进行查看该资源是啥样的情况

点赞 0
浏览 1.5k

tcp 参考:proxy_protocol, set_real_ip_from,

点赞 0
浏览 925