nginx

استقرار 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;
		}
	}
}
توجه داشته باشید که به‌منظور هدایت ترافیک باید شناسه و پورت برنامه‌ی مقصد خود را با مقادیر app-name و port در فایل nginx.conf جایگزین کنید.

درنهایت با اجرای دستور liara deploy --platform=docker --port=80 در مسیر اصلی پروژه، Nginx بر روی برنامه‌ی Docker تهیه شده مستقر خواهد شد.

توضیحات و نکات تکمیلی

تنظیم مسیر tmp به‌عنوان مقصدی برای ذخیره‌ی فایل‌های موقتی

با مشاهده‌ی فایل nginx.conf متوجه خواهید که در موارد مختلف از مسیر tmp به‌عنوان مقصدی برای ذخیره‌ی فایل‌های موقتی استفاده شده است و توجه داشته باشید که حتما پیکربندی زیر را لحاظ کنید تا با خطای Read-only file system مواجه نشوید.

با وجود Read-Only بودن فایل‌سیستم برنامه‌های لیارا، دایرکتوری /tmp از این قاعده مستثنی است و شما می‌توانید از این دایرکتوری که در همه پلن‌های ارائه شده، فضایی برابر ۱۰۰ مگابایت دارد، برای ذخیره لاگ‌ها، فایل‌ها آپلودی موقتی و غیره استفاده کنید. توضیحات بیشتر
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;
  }
}

;