
استقرار Nginx
(Docker Apps)Nginx یک HTTP server و reverse proxy متن باز و بسیار قدرتمند است که شما میتوانید از آن بهمنظور کنترل و مدیریت ترافیک ورودی برنامههایتان استفاده کنید.
حال برای راهاندازی Nginx در برنامههای Docker لیارا کافیست یک پروژهی جدید در مسیر دلخواه خود ایجاد کرده و دو فایل با نامهایDockerfile و nginx.conf را با محتوای مربوطه در این پروژه قرار دهید.
- Dockerfile:
FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf
- nginx.conf:
user nginx;
worker_processes auto;
pid /tmp/nginx.pid;
events {
worker_connections 1024;
}
http {
client_body_temp_path /tmp/client_temp;
proxy_temp_path /tmp/proxy_temp_path;
fastcgi_temp_path /tmp/fastcgi_temp;
uwsgi_temp_path /tmp/uwsgi_temp;
scgi_temp_path /tmp/scgi_temp;
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$request_method $status $http_x_forwarded_for "$request_uri" "$http_referer" "$http_user_agent"';
server_tokens off;
sendfile on;
keepalive_timeout 65;
gzip on;
access_log /dev/stdout;
error_log stderr;
server {
resolver 127.0.0.11 ipv6=off valid=5s;
listen 80;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
set $backend "http://app-name:port";
proxy_pass $backend;
}
}
}
درنهایت با اجرای دستور liara deploy --platform=docker --port=80 در مسیر اصلی پروژه، Nginx بر روی برنامهی Docker تهیه شده مستقر خواهد شد.
توضیحات و نکات تکمیلی
تنظیم مسیر tmp بهعنوان مقصدی برای ذخیرهی فایلهای موقتی
با مشاهدهی فایل nginx.conf متوجه خواهید که در موارد مختلف از مسیر tmp بهعنوان مقصدی برای ذخیرهی فایلهای موقتی استفاده شده است و توجه داشته باشید که حتما پیکربندی زیر را لحاظ کنید تا با خطای Read-only file system مواجه نشوید.
client_body_temp_path /tmp/client_temp;
proxy_temp_path /tmp/proxy_temp_path;
fastcgi_temp_path /tmp/fastcgi_temp;
uwsgi_temp_path /tmp/uwsgi_temp;
scgi_temp_path /tmp/scgi_temp;
تنظیم resolver
با توجه به احتمال تغییر IP برنامکها در لیارا، تنظیم resolver در فایل nginx.conf این امکان را بهوجود میآورد تا هر بار IP جدید برنامه دریافت شده و مشکلی در هدایت ترافیک بهوجود نیاید.
server {
resolver 127.0.0.11 ipv6=off valid=5s;
listen 80;
location / {
...
set $backend "http://app-name:port";
proxy_pass $backend;
}
}