
在 Debian 機器上,Squid 和 Apache 正在運作。 HTTPs 透過 Certbot (Lets Encrypt) 啟用。
我有多個網域(虛擬主機),我對所有網域使用一個 IP 位址。
Apache 正在偵聽連接埠 81 (HTTP) 和 444 (HTTPS)
我的魷魚.conf 看起來像這樣:
# Incoming Connections
http_port 80 accel
cache_peer localhost parent 81 0 no-query originserver
https_port 443 acceldefaultsite=yourwebserver vhost
cache_peer localhost parent 444 0 no-query originserver
# ACL
http_access allow all
# Allowed Ports
acl SSL_ports port 443 # https
acl Safe_ports port 80 # http
acl CONNECT method CONNECT
我的問題:當我使用上面的設定啟動服務時,Squid 要求提供憑證以啟用 HTTPS。
但對於每個網域,我使用不同的憑證。如何強制 Squid 將 443 重定向到 444 localhost?
答案1
Squid 要求提供憑證以啟用 HTTPS
這就是 HTTPS 的全部思想。你會肯定地需要證書來提供受證書保護的內容。否則,您將沒有 http 代理,而是使用 NAT 或 TCP 代理(例如帶有 UPSTREAM 提供者的 nginx)。
但對於每個網域我使用不同的憑證。
這就是 SSL (TLS) 的理念,也是您可以(閱讀:您必須)使用不同屬性來配置不同偵聽器的原因。或者您只使用 TCP 轉送而不終止(讀取:卸載)SSL。
在squid3
虛擬主機 vonfiguration 中是這樣完成的:
https_port serverone.com:443 cert=/etc/ssl/serverone.pem vhost
https_port servertwo.com:443 cert=/etc/ssl/servertwo.pem vhost
cache_peer lanserverone parent 80 0 name=lanserverone no-query originserver
cache_peer_domain lanserverone serverone.com
cache_peer lanservertwo parent 80 0 name=lanservertwono-query originserver
cache_peer_domain lanservertwo servertwo.com
如何強制 Squid 將 443 重定向到 444 localhost
簡短的回答:你不能。嘗試使用上游 nginx 或僅在路由器中執行 NAT。