У меня есть сайт разработки, работающий на хост-машине (Mac OS X) в MAMP, который я хочу просмотреть на клиентском компьютере (а также на мобильных устройствах - все Mac OS). Все подключены к одной локальной сети (Wi-Fi). Я успешно настроил прокси-сервер 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