我有一个设备需要连接到 tcp:80 上的互联网服务,但网络没有直接的互联网访问权限。所以我使用 squid 代理来解决这个问题。
该设备允许我输入代理服务器、端口、用户名和密码。
我发现,该设备使用 http CONNECT 而不是 http GET(在我的浏览器上运行良好)。
当设备尝试连接时,它会收到一个 http 错误 400。squid access.log 只给我这个:
1338885433.033 0 172.22.140.129 TCP_DENIED/400 1728 连接:0-无/-文本/html
所以我捕获了数据包以真正了解发生了什么:
来自设备的请求:
连接 mydomain.com:0 HTTP/1.0 用户代理:Sequencer/5.5.0.5539
鱿鱼的回答:
HTTP/1.0 400 错误请求 鱿鱼/2.7.STABLE9 X-Squid-错误:ERR_INVALID_URL 0 关
我的 squid.conf:
auth_param 基本程序 /usr/lib/squid/pam_auth auth_param 基本儿童 5 auth_param 基本领域 Squid 代理缓存网络服务器 auth_param 基本凭据ttl 2 小时 auth_param 基本区分大小写关闭 acl 全部 src 全部 acl 管理器原型缓存对象 acl 本地主机 src 127.0.0.1/32 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 acl localnet src 10.0.0.0/8 # RFC1918 可能的内部网络 acl localnet src 172.16.0.0/12 # RFC1918 可能的内部网络 acl localnet src 192.168.0.0/16 # RFC1918 可能的内部网络 acl SSL_ports 端口 443 # https acl SSL_ports 端口 563 # 新闻 acl SSL_ports 端口 873 # rsync acl Safe_ports 端口 80 # http acl Safe_ports 端口 21 # ftp acl Safe_ports 端口 443 # https acl Safe_ports 端口 70 # gopher acl Safe_ports 端口 210 # wais acl Safe_ports port 1025-65535 #未注册的端口 acl Safe_ports 端口 280 # http-mgmt acl Safe_ports 端口 488 # gss-http acl Safe_ports 端口 591 # 文件生成器 acl Safe_ports port 777 #multiling http acl Safe_ports 端口 631 # 杯子 acl Safe_ports 端口 873 # rsync acl Safe_ports 端口 901 # SWAT acl 吹扫方法 PURGE acl CONNECT 方法 CONNECT acl checkpw proxy_auth 需要 http_access 允许管理器本地主机 http_access 拒绝管理器 http_access 允许清除本地主机 http_access 拒绝清除 http_access 拒绝!Safe_ports http_access 允许连接 http_access 允许本地网 http_access 允许本地主机 http_access 允许 checkpw 全部 http_access 全部拒绝 icp_access 允许本地网 icp_access 全部拒绝 http_port 3128 hierarchy_stoplist cgi-bin ? access_log /var/log/squid/access.log 鱿鱼 debug_options ALL,1 33,2 28,9 refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern(发布|包(.gz)*)$ 0 20% 2880 刷新模式。0 20% 4320 acl 广播 rep_header X-HTTP09-First-Line ^ICY.[0-9] upgrade_http0.9 拒绝直播 acl apache rep_header 服务器 ^Apache broken_vary_encoding 允许 apache extension_methods 报告合并 MKACTIVITY CHECKOUT 主机文件 /etc/hosts forwarded_for 关闭 coredump_dir /var/spool/squid
有什么解决方案可以摆脱 ERR_INVALID_URL?我是否误解了 squid 代理的概念,或者来自设备的请求无效?
如果需要任何其他信息,请告诉我。
提前谢谢你,克里斯蒂安。