ファイアウォールの設定

ファイアウォールの設定

ポート8080と8443にキャディWebサーバーを公開し、それぞれ80と443にマップされたドッカーがあります。

https://localhost:8443を使用してローカルブラウザを介してアクセスできますが、ブラウザは最初にSSL証明書が自己署名されたと文句を言います。不明な理由でhttp://localhost:8080を使用してアクセスしようとすると、ブラウザはhttps://localhost(httpsですがポートはありません)にリダイレクトされます。

[michael@localhost api-platform]$ docker ps
CONTAINER ID   IMAGE                COMMAND                  CREATED          STATUS                    PORTS                                                                                                                               NAMES
b4f9c942d02f   api-platform_caddy   "caddy run --config …"   22 minutes ago   Up 22 minutes             2019/tcp, 0.0.0.0:8080->80/tcp, :::8080->80/tcp, 0.0.0.0:8443->443/tcp, 0.0.0.0:8443->443/udp, :::8443->443/tcp, :::8443->443/udp   api-platform_caddy_1
120471adcb43   api-platform_php     "docker-entrypoint p…"   22 minutes ago   Up 22 minutes (healthy)   9000/tcp                                                                                                                            api-platform_php_1
4ab23f9bd5d9   postgres:13-alpine   "docker-entrypoint.s…"   22 minutes ago   Up 22 minutes             0.0.0.0:5433->5432/tcp, :::5433->5432/tcp                                                                                           api-platform_database_1
958944520bd5   api-platform_pwa     "docker-entrypoint.s…"   22 minutes ago   Up 22 minutes             3000/tcp                                                                                                                            api-platform_pwa_1
[michael@localhost api-platform]$

別のコンピュータからDockerのWebサーバーにアクセスしたいです。私は次のアプローチを試しましたが、ホストのApache Webサーバーを使用するよりも優れた方法がある場合は、それを変更できます。

両方のバージョンを試してみました(以下の2つの仮想ホストプロファイルを参照)。 Apacheなしで使用するのと似ています。http://api-platform.example.com:80httpsにリダイレクトされます。

リクエストを次に転送します。http://127.0.0.1:8080。動作は、https://localhostを使用するローカルシステム、または次のものを使用するリモートシステムで同じです。https://api-platform.example.com/ブラウザに「クライアントがHTTPSサーバーにHTTPリクエストを送信しました」と表示されます。 Dockerログは自動で、Apacheはエラーを記録しません。しかし、Apacheのログアクセスは次のとおりです。

127.0.0.1 - - [05/Sep/2021:10:18:32 -0700] "GET / HTTP/1.1" 400 48 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0" (localhost)
11.22.33.44 - - [05/Sep/2021:10:34:18 -0700] "GET / HTTP/1.1" 400 48 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36" (remote)

リクエストを通過https://127.0.0.1:8443。 localhostの場合、ブラウザが最初に署名された署名に対して文句を言うことを除いて、期待どおりに機能しますが、リモートアクセスの場合、ブラウザは次のようにThe proxy server received an invalid response from an upstream serverApacheのアクセスログとエラーログを表示します。

11.22.33.44 - - [05/Sep/2021:10:29:10 -0700] "GET / HTTP/1.1" 502 341 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36"
11.22.33.44 - - [05/Sep/2021:10:29:10 -0700] "GET /favicon.ico HTTP/1.1" 200 - "https://api-platform.example.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36"
11.22.33.44 - - [05/Sep/2021:10:29:10 -0700] "GET /favicon.ico HTTP/1.1" 502 341 "https://api-platform.example.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36"


[Sun Sep 05 10:29:30.461504 2021] [proxy_http:error] [pid 111778:tid 140510476093184] (103)Software caused connection abort: [client 11.22.33.44:53690] AH01102: error reading status line from remote server 127.0.0.1:8443
[Sun Sep 05 10:29:30.461535 2021] [proxy:error] [pid 111778:tid 140510476093184] [client 11.22.33.44:53690] AH00898: Error reading from remote server returned by /
[Sun Sep 05 10:29:30.481675 2021] [proxy_http:error] [pid 111778:tid 140510240954112] (103)Software caused connection abort: [client 11.22.33.44:53690] AH01102: error reading status line from remote server 127.0.0.1:8443, referer: https://api-platform.example.com/
[Sun Sep 05 10:29:30.483998 2021] [proxy_http:error] [pid 111778:tid 140510257739520] (103)Software caused connection abort: [client 11.22.33.44:59869] AH01102: error reading status line from remote server 127.0.0.1:8443, referer: https://api-platform.example.com/
[Sun Sep 05 10:29:30.484012 2021] [proxy:error] [pid 111778:tid 140510257739520] [client 11.22.33.44:59869] AH00898: Error reading from remote server returned by /favicon.ico, referer: https://api-platform.example.com/

ファイアウォールの設定はこの文書の下部に表示されます。 HTTPサーバーへのリモートアクセスをどのように許可する必要がありますか?

仮想ホスト構成ファイル:

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName api-platform.example.com
    ProxyPreserveHost On
    ProxyRequests off
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/
    ErrorLog /var/log/httpd/api-platform.example.com-error.log
    CustomLog /var/log/httpd/api-platform.example.com-access.log combined
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/testing.example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/testing.example.com/privkey.pem
</VirtualHost>
</IfModule>


<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName api-platform.example.com
    ProxyPreserveHost On
    ProxyRequests off
    SSLProxyEngine On
    SSLProxyVerify none
    SSLProxyCheckPeerCN off
    SSLProxyCheckPeerExpire off
    SSLProxyCheckPeerName off
    ProxyPass / https://127.0.0.1:8443/
    ProxyPassReverse / https://127.0.0.1:8443/
    ErrorLog /var/log/httpd/api-platform.example.com-error.log
    CustomLog /var/log/httpd/api-platform.example.com-access.log combined
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/testing.example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/testing.example.com/privkey.pem
</VirtualHost>
</IfModule>

ファイアウォールの設定

[michael@localhost api-platform]$ sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s31f6 wlp0s20f3
  sources:
  services: cockpit dhcpv6-client ssh
  ports: 80/tcp 443/tcp 8080/tcp 8443/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
[michael@localhost api-platform]$

ベストアンサー1

ホストシステムにはWebサーバーは必要ありません。私はこれがホストシステムのファイル壁であると思います。ポートをブロックできます。

おすすめ記事