VPCを設定Apacheのプロキシサーバーを使用します

本明細書では、「帰属4.0国際(4.0 BY CC)」使用許諾契約は、転載、変更、または再利用するために歓迎するが、ソースを指定する必要があります。帰属4.0国際(4.0 BY CC)

著者:蘇ヤン

作成:2019年8月10日統計ワード数:読取時間2779個の言葉::6分この記事のリンクを読むことをsoulteary.com/2019/08/10 / ...を


VPCを設定Apacheのプロキシサーバーを使用します

いくつかのジュニアパートナーは、ユーザーがサーバーにアクセスできないように、ネットワーク環境では、サーバーのデフォルトは、何のパブリックIPではありません、VPCネットワークの下でサーバーを使用していない可能性があります。ユーザーは、サーバーのパブリックネットワークからアプリケーションにアクセスできるように、一般的な戦略は、SLBネットワークトラフィック剤を用いて行われます。

しかし、これが唯一の交通入りの問題を解決することができ、個別に割り当てられたIPは明らかに最適なソリューションではありません各マシンに、VPC環境の下で、パブリックネットワークリソースにアクセスするためのネットワーク機器の問題を解決することはできませんし、我々は一般的に使用することを選択しますエクスポートなどのサーバーは、プロキシサーバーを設定します。

Apacheのプロキシサーバーを使用してコンテナ設定

ネットワーク・サーバ環境内のプロキシサーバーを設定するには、我々は一般的に好むApacheのトラフィックサーバーを、実際には、使用はApacheまた、問題の簡単な解決策になることができます。

プロキシサーバーとしてApacheを使用して比較すると、トラフィックServerは、非常に簡単です。コンテナレイアウトファイルはdocker-compose.ymlわずか22行が必要になります。

version: "3.6"

services:

  proxy:
    image: httpd:2.4.39-alpine
    restart: always
    container_name: network-proxy
    ports:
      - 1080:80
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
      - ./httpd.conf:/usr/local/apache2/conf/httpd.conf
    healthcheck:
      test: ["CMD-SHELL", "httpd -T"]
      interval: 5s
      retries: 12
    logging:
        driver: "json-file"
        options:
            max-size: "10m"
复制代码

Apacheの設定ファイルはhttpd.confちょうどライン上のラインに30を下回る、非常に複雑のようにインターネットを設定する必要はありません。

ServerName localhost
Listen 80

LoadModule mpm_event_module modules/mod_mpm_event.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_http2_module modules/mod_proxy_http2.so
LoadModule unixd_module modules/mod_unixd.so

User daemon
Group daemon

ErrorLog /proc/self/fd/2
LogLevel warn

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog /proc/self/fd/1 common

ProxyRequests On
ProxyVia On

<Proxy *>
    Order deny,allow
    Deny from all
    Allow from 192.168.0.0/24
</Proxy>
复制代码

あなたは私のように、明確なプロキシサービスのターゲットサーバであれば、あなたができる<Proxy>サービスの不正使用を避けるために、声明の中でそれを設定し、もちろん、誰にでも、ファイアウォールのセキュリティに関連して使用戦略をお勧めします。

使用するdocker-compose upアプリケーションを起動するには、次のログのように表示されます。

network-proxy | [Sat Aug 10 15:32:06.652264 2019] [mpm_event:notice] [pid 1:tid 140135351733576] AH00489: Apache/2.4.39 (Unix) configured -- resuming normal operations
network-proxy | [Sat Aug 10 15:32:06.652318 2019] [core:notice] [pid 1:tid 140135351733576] AH00094: Command line: 'httpd -D FOREGROUND'
复制代码

見てロギングサービスは、実際に起動されますが、有効性は知られていないので、我々はテストする必要があります。

テストサービス

プロキシサーバーを別のサーバーに取り組んでいるカールテストを使用して、正常に動作している場合、結果は次のようになります。

# http_proxy=http://192.168.0.50:1080 curl http://cip.cc/
IP	: 39.xxx.xxx.xxx
地址	: 中国  北京
运营商	: 阿里云/电信/联通/移动/铁通/教育网
数据二	: 香港 | 特别行政区
数据三	: 中国北京北京市 | 阿里云

URL	: http://www.cip.cc/39.xxx.xxx.xxx
复制代码

サーバーの構成

唯一のあなたがする必要がある、パブリックネットワークプロキシサーバを行くために、デフォルトのサーバーのトラフィックが非常に簡単ですしてみましょう/etc/profile設定ファイルに2行を追加します。

export http_proxy=http://192.168.0.50:1080
export https_proxy=http://192.168.0.50:1080
复制代码

プロファイルファイルが変更された後、手動でファイルをリロードする必要があります。

source /etc/profile
复制代码

接続又は切断される現在の端末が、サーバに再接続するだけでなく、構成を有効にすることを可能にします。再度、認証のためのカールプロキシサーバーを使用して、デフォルトのパブリックネットワークトラフィックがプロキシサーバーを経由します表示されます。

# curl -v https://www.baidu.com
* Rebuilt URL to: https://www.baidu.com/
*   Trying 192.168.0.50...
* TCP_NODELAY set
* Connected to 192.168.0.50 (192.168.0.50) port 1080 (#0)
* allocate connect buffer!
* Establish HTTP proxy tunnel to www.baidu.com:443
> CONNECT www.baidu.com:443 HTTP/1.1
> Host: www.baidu.com:443
> User-Agent: curl/7.58.0
> Proxy-Connection: Keep-Alive
>
< HTTP/1.0 200 Connection Established
< Proxy-agent: Apache/2.4.39 (Unix)
<
* Proxy replied 200 to CONNECT request
* CONNECT phase completed!
* ALPN, offering h2
* ALPN, offering http/1.1
复制代码

設定コンテナサービス

ドッカー公式文書には言及している設定は、システムのプロキシ設定を使用するようにドッカーデーモンにしたい場合は、あなたがその開始前に設定する必要があり、daemon.json大法が、それはここでは適用されません。

ソリューションは、デフォルトのオーバーライドすることでdocker.service、設定ファイルをディレクトリサービスの設定を作成します。

sudo mkdir -p /etc/systemd/system/docker.service.d
复制代码

次に、ファイルを作成し、ファイルの内容を編集し/etc/systemd/system/docker.service.d/http-proxy.conf、環境変数を追加します:

[Service]

Environment="HTTP_PROXY=http://192.168.0.50:1080"
Environment="HTTPS_PROXY=http://192.168.0.50:1080"
Environment="NO_PROXY=localhost,127.0.0.1,192.168.0.0/24,*.domain.ltd"
复制代码

その後、サービスを再起動します。

sudo systemctl daemon-reload && sudo systemctl restart docker
复制代码

最後に、使用しdocker pullた構成が動作していることを確認するためのコマンドを:

# docker pull alpine
Using default tag: latest
latest: Pulling from library/alpine
050382585609: Already exists
Digest: sha256:6a92cd1fcdc8d8cdec60f33dda4db2cb1fcdcacf3410a8e05b3741f44a9b5998
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest
复制代码

構成コンテナ内部環境

内部ネットワークの構成コンテナがなければ、公共サービスにアクセスするための容器を使用し、基本的な経験のネットワークのタイムアウト:

docker run --rm -it alpine

/ # apk update
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.10/main: network error (check Internet connection and firewall)
WARNING: Ignoring APKINDEX.00740ba1.tar.gz: No such file or directory
复制代码

ドッカー事実、公式文書には言及している、解決策の原理は、編集することにより、~/.docker/config.json自動的にコンテナのPROXY環境変数を注入するために、構成ファイルにドッキングウィンドウのクライアントを。

{
    "proxies": {
        "default": {
            "httpProxy": "http://192.168.0.50:1080",
            "httpsProxy": "http://192.168.0.50:1080",
            "noProxy": "127.0.0.1,localhost,192.168.0.0/24,*.domain.ltd"
        }
    }
}
复制代码

あなたは上記の構成は、コンテナサービスを再起動する必要は良いではありません追加した後、直接、再度コマンドを実行することができます。

# docker run --rm -it alpine

/ # apk update
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/community/x86_64/APKINDEX.tar.gz
v3.10.1-62-g89778c626e [http://dl-cdn.alpinelinux.org/alpine/v3.10/main]
v3.10.1-60-gb0081284ea [http://dl-cdn.alpinelinux.org/alpine/v3.10/community]
OK: 10337 distinct packages available
复制代码

これまでのところ、VPCの下でのサーバーとコンテナは、インターネット環境が問題に設定されているアクセス。

遂に

サーバー外部のセキュリティリスクを軽減、パブリックネットワークにアクセスするためのIPサーバーが着信トラフィックを許可しない、ファイアウォールのルールを設定することを忘れないでください。

-EOF


私は今、小さなパートナーを投げのようないくつかを集めて少しイライラするグループを、持っています。

髪の広告がなければ、我々はいくつかの技術的な情報サロンを共有するために随時グループでも、内部のソフトウェアの問題のHomeLab、プログラミングのいくつかをお話します。

友人を追加するために、小さなパートナー歓迎スキャンコードを投げのように。(それは承認されず、送信元と宛先を指定してください)

のグループにグループについて、これらのイライラする事

おすすめ

転載: juejin.im/post/5d4eac63e51d453bdc41c094