同じ docker ブリッジ内の django セットアップにリバース プロキシする仮想ホストで nginx docker を実行しています (これは機能します)。 nginx 自体から静的 HTML コンテンツを提供する 2 番目の仮想ホストを追加しようとしています。 Web 上の例に従おうとしていますが、うまくいきません。 誰かが私の間違いに気付いてくれることを願っています。
以下のファイルでは、匿名性を保つためにDNS名を変更しています。abcde.wxyz.orgとabcd.defgh.orgは両方とも同じIPに解決され、名前解決は正常に機能します。(a) アクセスhttps://abcd.defgh.org/(つまりプロキシ)は正常に動作します。(b)アクセスhttp://abcde.wxyz.org/(静的ウェブページ)では、ERR_CONNECTION_REFUSED(c)アクセスが発生しますhttps://abcde.wxyz.org/すると、(a) に至りますが、これも起こるべきではありません。
何が間違っているのでしょうか?
私の /etc/nginx/nginx.conf ファイルは次のとおりです:
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
}
/etc/nginx/conf.d/ ディレクトリには、次のような 1 つのファイル (「django.conf」) があります。
server {
listen 80;
server_name abcd.defgh.org;
access_log /var/www/logs/abcd.defgh.org.log;
error_log /var/www/logs/abcd.defgh.org.log error;
root /var/www/abcd.defgh.org/public_html;
index index.html index.htm;
location / {
try_files $uri $uri/ /index.html;
}
}
server {
listen 80;
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name abcde.wxyz.org;
ssl_certificate /etc/ssl/certs/localhost.crt;
ssl_certificate_key /etc/ssl/private/localhost.key;
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
location / {
proxy_pass http://web:8000;
}
}
「web」は docker ネームサービスによって解決され、機能します。
さらにトラブルシューティングを行うために、nginx docker からアクセス ログやエラー ログを取得できないようです。
答え1
誤報です。Docker 環境の問題であることが判明しました。Docker はポート 443 のみが転送され、ポート 80 は転送されないように設定されていました。