スクレイピング用にAWSでプロキシサーバーを構築しています。
EC2でプロキシサーバー(Squid)を2台構成にして、NLBで冗長化します。
上記の環境を作ってアクセスしてみたところ、以下のようにエラーになりました。
# 4578ポートでアクセスした場合のエラー http_proxy=http://xxxx-proxy-nlb2-xxxx.elb.ap-northeast-1.amazonaws.com:4578 curl http://www.ugtop.com/spill.shtml -v * Uses proxy env variable http_proxy == 'http://xxxx-proxy-nlb2-xxxx.elb.ap-northeast-1.amazonaws.com:4578' * Trying xx.xxx.xx.xxx... * TCP_NODELAY set * Connected to xxxx-proxy-nlb2-xxxx.elb.ap-northeast-1.amazonaws.com (xx.xxx.xx.xxx) port 4578 (#0) > GET http://www.ugtop.com/spill.shtml HTTP/1.1 > Host: www.ugtop.com > User-Agent: curl/7.64.1 > Accept: */* > Proxy-Connection: Keep-Alive > * Empty reply from server * Connection #0 to host xxxx-proxy-nlb2-xxxx.elb.ap-northeast-1.amazonaws.com left intact curl: (52) Empty reply from server * Closing connection 0 # 80ポートでアクセスした場合のエラー * Uses proxy env variable http_proxy == 'http://xxx-proxy-nlb2-xxxx.elb.ap-northeast-1.amazonaws.com:80' * Trying xx.xxx.xx.xxx... * TCP_NODELAY set * Connection failed * connect to xx.xxx.xx.xxx port 80 failed: Operation timed out * Trying xx.xxx.xx.xxx... * TCP_NODELAY set * Connection failed * connect to 54.168.145.147 port 80 failed: Operation timed out * Failed to connect to xx-proxy-nlb2-xxxx.elb.ap-northeast-1.amazonaws.com port 80: Operation timed out * Closing connection 0 curl: (7) Failed to connect to xx-proxy-nlb2-xxxx.elb.ap-northeast-1.amazonaws.com port 80: Operation timed out
NLB無しでEC2単体の場合は、うまく動いていたので、おそらくNLBかSquidの設定周りが原因だと思っております。
現状の設定は以下の通りです。
どこが間違っているのか、ご教示頂けましたら幸いです
現状の設定
NLB
スキーム: インターネット向け IPアドレスタイプ; ipv4 # リスナー プロトコル:TCP ポート: 4578 #Squidのポート #アベイラビリティーゾーン VPC: 上記構成図のVPC サブネット: 上記構成図のサブネットを2つ指定 IPアドレス: 2つともEIPを割り当て # ターゲットグループ ターゲットタイプ:インスタンス プロトコル:TCP ポート: 4578 VPC: 上記構成図のVPC ターゲット; 上記構成図のEC2を2つとも指定。ポートは4578、ステータスはhealthy Proxy protocol v2: Enabled
EC2
Squid
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network acl localnet src 10.0.2.0/8 # RFC1918 possible internal network acl localnet src 172.16.0.0/12 # RFC1918 possible internal network acl localnet src 192.168.0.0/16 # RFC1918 possible internal network acl localnet src fc00::/7 # RFC 4193 local private network range acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines acl SSL_ports port 443 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 CONNECT method CONNECT #-- proxy設定---------------- #ポートの指定とproxy接続時にproxy protocolを必須にする http_port 4578 require-proxy-header http_port 4578 #NLBのIPをACLに追加 ## NLBのEIP acl nlb_ip src xx.xx.xx.xx acl nlb_ip src xx.xx.xx.xx ## NLBのローカルIP acl nlb_ip src 10.0.0.19 acl nlb_ip src 10.0.2.179 #クライアントIPをACLに追加 ## スクレイピングシステムのグローバルIP acl client_ip src xx.xx.xx.xx #URLフィルタリング #acl whitelist dstdomain "/etc/squid/whitelist" #Proxy Protocolの利用許可 proxy_protocol_access allow localnet proxy_protocol_access allow nlb_ip proxy_protocol_access allow client_ip proxy_protocol_access deny all #httpアクセスの許可 http_access permit nlb_ip #クライアントの許可とホワイトリストの適用 http_access permit client_ip #----------------------------- # # Recommended minimum Access Permission configuration: # # Deny requests to certain unsafe ports http_access deny !Safe_ports # Deny CONNECT to other than secure SSL ports http_access deny CONNECT !SSL_ports # Only allow cachemgr access from localhost http_access allow localhost manager http_access deny manager # We strongly recommend the following be uncommented to protect innocent # web applications running on the proxy server who think the only # one who can access services on "localhost" is a local user #http_access deny to_localhost # # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # # Example rule allowing access from your local networks. # Adapt localnet in the ACL section to list your (internal) IP networks # from where browsing should be allowed http_access allow localnet http_access allow localhost # Uncomment and adjust the following to add a disk cache directory. #cache_dir ufs /var/spool/squid 100 16 256 # Leave coredumps in the first cache dir coredump_dir /var/spool/squid # # Add any of your own refresh_pattern entries above these. # 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 http_access allow all client_persistent_connections off server_persistent_connections off # 以下、マニュアル設定------------------------------------- # ランダムIP数(スクレイピング用にIPを分散する) acl balance random 1/4 balance_on_multiple_ip on # 拒否設定まわり visible_hostname unknown forwarded_for off request_header_access X-Forwarded-For deny all request_header_access Via deny all request_header_access Cache-Control deny all reply_header_access X-Forwarded-For deny all reply_header_access Via deny all reply_header_access Cache-Control deny all max_filedesc 65535 # スクレイピング用の分散ElasticIPに紐付けたprivate IP tcp_outgoing_address 10.0.2.162 balance tcp_outgoing_address 10.0.2.163 balance tcp_outgoing_address 10.0.2.164 balance tcp_outgoing_address 10.0.2.165 balance # キャッシュしない設定 acl NOCACHE src all cache deny NOCACHE
以上、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/17 08:31