警告:ホスト名を使用してコンピュータのポート443にアクセスできないようです

私はプロキシを前面に置いていないため、例を持っていませんが、以前に実装した記憶があります。いずれにせよ、秘密はなく、他のリバースプロキシと同じように設定すれば問題ありません。以下は、ソケットではなくポートを使用して行うべきことの概要です。

  1. ポート 80 および 443 以外のポート(例:8443)で動作している WordPress サービスが確実に存在することを確認してください。まずインターネットに公開して動作確認を行うこともできます。

  2. Discourse についても同様に、異なるポートにマッピングしてください。

変更前:

expose:
  - "80:80"   # http
  - "443:443" # https

変更後(例):

expose:
  - "8081:80"   # http
  - "8444:443" # https

app.yml ファイルを確認してください(持っていない場合は、公式ガイドに従ってスタンドアロンマシンで Discourse を実行し、動作を確認した上で、/var/discourse/containers/ に生成された app.yml ファイルを参照することをお勧めします)。以下は app.yml ファイルのサンプルです:discourse_docker/samples/standalone.yml at master · discourse/discourse_docker · GitHub

  1. Nginx をインストールし、設定ファイルにプロキシディレクティブを追加してください。以下はサンプル抜粋です。
upstream blog {
    server localhost:8080;
}

server {
    server_name blog.barinaklar.com;
    server_tokens off;
    listen 80;

    location /.well-known/acme-challenge/ {
        root /var/www/certbot;
    }

    location / {
        return 301 https://blog.barinaklar.com$request_uri;
    }
}

server {
    server_name blog.barinaklar.com;
    server_tokens off;
    listen 443 ssl;

    location /.well-known/acme-challenge/ {
        root /var/www/certbot;
    }

    location / {
        proxy_pass           http://blog;
        proxy_redirect       off;
        proxy_set_header     Host $host;
        proxy_set_header     X-Real-IP $remote_addr;
        proxy_set_header     X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header     X-Forwarded-Host $server_name;
        proxy_set_header     X-Forwarded-Proto $scheme;
    }
}

upstream forum {
    server localhost:8081;
}

server {
    server_name forum.barinaklar.com;
    server_tokens off;
    listen 80;

    location /.well-known/acme-challenge/ {
        root /var/www/certbot;
    }

    location / {
        return 301 https://forum.barinaklar.com$request_uri;
    }
}

server {
    server_name forum.barinaklar.com;
    server_tokens off;
    listen 443 ssl;

    location /.well-known/acme-challenge/ {
        root /var/www/certbot;
    }

    location / {
        proxy_pass           http://forum;
        proxy_redirect       off;
        proxy_set_header     Host $host;
        proxy_set_header     X-Real-IP $remote_addr;
        proxy_set_header     X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header     X-Forwarded-Host $server_name;
        proxy_set_header     X-Forwarded-Proto $scheme;
    }
}

これは WordPress がポート 8080 で、Discourse がポート 8081 で動作していることを前提としています。これらのポートへのアクセスをブロックするファイアウォールを設定してください(クラウドプロバイダーはデフォルトで 22 番ポート以外のすべてのポートをブロックしていることが多いため、不要な場合もあります)。

この場合、SSL/TLS 証明書の発行はご自身で行う必要があります(certbot を cron ジョブで定期的に実行することで可能です。そのため、Nginx 設定に /.well-known/acme-challenge/ のパスを既に含めています)。


前述の通り、これは概要に過ぎず、見落としがあるかもしれません。ポート変更に伴うベース URL には特に注意してください(ユーザーを https://yourdomain ではなく https://yourdomain:8081 にリダイレクトしようとしていないか確認し、必要に応じて修正してください)。

WordPress がコンテナ内でポート 80 または 443 を使用して実行されている場合は、この手順が不要な場合があります。Discourse についても同様です。問題が発生するとすれば https 関連で、プロキシ側で http ポートを使用しているために https から http へリダイレクトされてしまう可能性があります。そのような場合は、発生を確認して修正してください。

「いいね!」 3