我在 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