分類
好用軟體

Squid Proxy的規則設定

通常架設好 Squid Proxy 後, 用來做 Proxy 代理功能時, 會希望能限制可使用的來源 IP 或是可訪問或不可訪問的 IP (除了做權限管控外, 還可以管理限制使用者可以訪問的目的網站).

今天有個需求是這樣的, 允許特定 IP 訪問特定的網站, 乍看下會這樣下:

acl AllowedIPs src 192.168.100.0/24
acl AllowedDomains dstdomain .google.com .yahoo.com
http_access allow AllowedIPs
http_access allow AllowedDomains
http_access deny all

但是這樣會變成 OR 的邏輯, 也就是只要白名單 IP, 或是白名單域名(包含子域名), 就會放行, 與原本需要的特定 IP 訪問特定網域不同.

分類
系統技術

如何檢測proxy工作是否正常

若要檢測 proxy是否工作正常, 可以將 proxy設定在自己的瀏覽器中來進行, 並透過 IP查詢來看是否有改變到 proxy server的IP就可以知道是否工作正常與正確設定完成.

不過若是想快速測試不想改動自己的 Browser設定, 可以用 curl 工具來進行測試, 說明如下:

正常不使用 Proxy的狀況來訪問:

curl https://ip.diary.tw/

可以問到自己的 IP. 若是要觀察 http header, 可以使用 -i, 會同時輸出 header 與察容, 或使用 -I來顯示 header only:

分類
FreeBSD/Linux

[nginx]Reverse Proxy with Cache SSL fails

一般我們在實作 Nginx 的 Reverse Proxy with Cache 時, 可以參考這篇:

https://www.nginx.com/resources/wiki/start/topics/examples/reverseproxycachingexample/

不過若是 proxy_pass 的 upstream 是 https://example.com/ 時, 會發生以下錯誤:

SSL_do_handshake() failed (SSL: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure) while SSL handshaking to upstream

從 log 來看, 其實原因很單純, 因為預設往 upstream 的 web request 會使用 ip 的方式連接, 而導致錯誤 (前端收到為 502 bad gateway), 解決方式只需要新增一個值:

proxy_ssl_server_name on;

如此即可, 請參閱: