در صورتی که داکر را پشت nginx اجرا میکنید، ممکن است برخی از کانتینرهای شما به هدرهای خاصی نیاز داشته باشند، در غیر این صورت مرورگری که سعی در دسترسی به آنها دارد ممکن است بخواهد به یک آدرس محلی یا خصوصی متصل شود، چیزی مانند https://127.0.0.1:8080. این کار نخواهد کرد. البته مگر اینکه داکر را روی ایستگاه کاری خود اجرا کنید. در زیر می توانید سرفصل های مورد نیاز برای جلوگیری از این مشکل را بیابید:
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Port 443;
proxy_set_header Proxy "";
در اینجا یک فایل پیکربندی کامل nginx وجود دارد، می توانید آن را در /etc/nginx/conf.d/ قرار دهید.
server {
if ($host = yourhostname.org) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name yourhostname.org;
location / {
return 301 https://$server_name$request_uri;
}
}
server {
listen 443;
server_name yourhostname.org;
access_log /var/log/nginx/yourhostname.org-acces.log main;
error_log /var/log/nginx/yourhostname.org-error.log;
ssl on;
ssl_certificate /etc/letsencrypt/live/yourhostname.org/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/yourhostname.org/privkey.pem; # managed by Certbot
location / {
limit_req zone=limited burst=200 nodelay;
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_buffering off;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Port 443;
proxy_set_header Proxy "";
}
}
8080 پورتی است که داکر شما به آن گوش می دهد:
% docker ps|grep 8080
a6108ec10751 lscr.io/linuxserver/chevereto "/init" 2 hours ago Up 2 hours 443/tcp, 0.0.0.0:8080->80/tcp chevereto