无法使用 Squid 代理通过 LAN 访问 SSL 加密的 MAMP 站点(非 SSL 站点运行良好)

无法使用 Squid 代理通过 LAN 访问 SSL 加密的 MAMP 站点(非 SSL 站点运行良好)

我在 MAMP 中的主机 (mac os x) 上有一个开发站点,我想在客户端计算机上查看它(以及移动设备 - 所有 mac os)。所有站点都连接到同一个 LAN(wifi)。我已成功在主机上设置了 Squid 代理,并且我可以在常规浏览器中查看客户端上的 HTTP 主机。但我在查看 SSL 加密的主机时遇到了一些麻烦。在开发环境中使用 SSL 很重要,因为我在生产中使用它。我希望有人能帮我弄清楚如何解决这个问题!提前致谢。

我使用 访问主机上的站点https://www.mydomain.dev:8899。它在所有浏览器中都运行良好。本地 IP:主机192.168.0.99、客户端192.168.0.98

我使用地址在 MAMP 中设置了一个小型测试虚拟主机http://test.dev:8898,没有 SSL 加密(它只列出了一个文件夹)。我可以通过输入浏览器在主机上访问它http://test.dev:8898。我创建了以下.pac文件并配置了客户端计算机以使用它进行代理配置:

function FindProxyForURL(url, host) {
  if (shExpMatch(url, "http://test.dev*")) {
    return "PROXY 192.168.0.99:3128; DIRECT";
  }
  return "DIRECT";
}

当我启动 Squid 时,使用下面显示的 squid 配置,我确实可以http://test.dev:8898在客户端计算机上的所有浏览器中进行访问,就像在主机上一样。太棒了。现在我.pac为开发站点设置了以下文件:

function FindProxyForURL(url, host) {
  if (shExpMatch(url, "https://www.mydomain.dev*")) {
    return "PROXY 192.168.0.99:3128; DIRECT";
  }
  return "DIRECT";
}

但是我无法连接到https://www.mydomain.dev:8899客户端机器,ERR_CONNECTION_REFUSED在 Chrome 中出现“无法连接”,在 Firefox 中出现“无法连接”(两种情况下响应都非常快,没有明显的延迟)。

两个请求看起来access.log如下:

1486685792.999     58 192.168.0.98 TCP_MISS/200 1258 GET http://test.dev:8898/ - HIER_DIRECT/192.168.0.99 text/html
1486685793.556      1 192.168.0.98 TCP_MISS/404 443 GET http://test.dev:8898/favicon.ico - HIER_DIRECT/192.168.0.99 text/html
1486685797.211      1 192.168.0.98 TCP_DENIED/403 3992 CONNECT www.mydomain.dev:8899 - HIER_NONE/- text/html
1486685797.213      0 192.168.0.98 TCP_DENIED/403 3992 CONNECT www.mydomain.dev:8899 - HIER_NONE/- text/html

其中还有一个奇怪的错误cache.log

2017/02/09 09:09:42 kid1| WARNING: 'Name-of-host-machine' rDNS test failed: (0) No error.
2017/02/09 09:09:42 kid1| WARNING: Could not determine this machines public hostname. Please configure one or set 'visible_hostname'.

这是 curl 的输出:

→ curl -v --proxy 192.168.0.99:3128 https://www.mydomain.dev:8899
* Rebuilt URL to: https://www.mydomain.dev:8899/
* Hostname was NOT found in DNS cache
*   Trying 192.168.0.99...
* Connected to 192.168.0.99 (192.168.0.99) port 3128 (#0)
* Establish HTTP proxy tunnel to www.mydomain.dev:8899
> CONNECT www.mydomain.dev:8899 HTTP/1.1
> Host: www.mydomain.dev:8899
> User-Agent: curl/7.37.1
> Proxy-Connection: Keep-Alive
> 
< HTTP/1.1 403 Forbidden
< Server: squid/3.5.23
< Mime-Version: 1.0
< Date: Fri, 10 Feb 2017 01:54:06 GMT
< Content-Type: text/html;charset=utf-8
< Content-Length: 3516
< X-Squid-Error: ERR_ACCESS_DENIED 0
< Vary: Accept-Language
< Content-Language: en
< X-Cache: MISS from localhost
< Via: 1.1 localhost (squid/3.5.23)
< Connection: keep-alive
< 
* Received HTTP code 403 from proxy after CONNECT
* Connection #0 to host 192.168.0.99 left intact
curl: (56) Received HTTP code 403 from proxy after CONNECT

https_port 3130 transparent我尝试在行下添加行http_port 3128 transparent,然后使用.pac文件重定向到192.168.0.99:3130,但不起作用。浏览器只是挂起等待连接,最终显示连接被拒绝。

希望有人知道这些错误意味着什么,以及我做错了什么!非常感谢您的宝贵时间。


这是我的squid.conf文件:

acl localnet src 192.168.0.0/24 # local subnet

acl SSL_ports port 443 8899
acl Safe_ports port 8899
acl Safe_ports port 80      # http
acl Safe_ports port 21      # ftp
acl Safe_ports port 443     # https
acl Safe_ports port 70      # gopher
acl Safe_ports port 210     # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280     # http-mgmt
acl Safe_ports port 488     # gss-http
acl Safe_ports port 591     # filemaker
acl Safe_ports port 777     # multiling http
acl Safe_ports port 8898  # testdev site
acl CONNECT method CONNECT

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
http_access deny all

http_port 3128 transparent

coredump_dir /usr/local/var/cache/squid

refresh_pattern ^ftp:       1440    20% 10080
refresh_pattern ^gopher:    1440    0%  1440
refresh_pattern -i (/cgi-bin/|\?) 0 0%  0
refresh_pattern .       0   20% 4320

相关内容