انتقل إلى المحتوى الرئيسي
العودة إلى الفئة

إعداد Nginx Proxy Manager: بروكسي عكسي بواجهة ويب

تثبيت Nginx Proxy Manager عبر Docker، تجديد شهادات SSL تلقائياً، إضافة proxy host، قوائم الوصول، إعادة التوجيه، البث والمواقع المخصصة.

وقت القراءة: 12 دقيقة المراقبة
nginx proxy managerreverse proxyssldockerواجهة ويبlet's encrypt

جدول المحتويات

إعداد Nginx Proxy Manager: بروكسي عكسي بواجهة ويب

Nginx Proxy Manager (NPM) هو أداة مفتوحة المصدر تتيح لك إدارة Nginx reverse proxy من خلال واجهة ويب سهلة الاستخدام. يمكنك إدارة شهادات SSL وتكوين proxy host والتحكم في الوصول دون الحاجة لسطر الأوامر.

ما هو Nginx Proxy Manager؟

الميزات الرئيسية:

  • واجهة ويب: لوحة إدارة سهلة الاستخدام
  • تجديد SSL تلقائي: SSL مجاني مع Let's Encrypt
  • Proxy Hosts: تكوين البروكسي العكسي
  • Redirection Hosts: إعادة توجيه URL
  • Stream Hosts: توجيه منافذ TCP/UDP
  • Access Lists: التحكم في الوصول حسب IP والمستخدم
  • Custom Locations: كتل location مخصصة لـ Nginx

التثبيت عبر Docker

تكوين Docker Compose

hljs yaml
# docker-compose.yml
version: '3.8'
services:
  npm:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: nginx-proxy-manager
    restart: unless-stopped
    ports:
      - '80:80'
      - '443:443'
      - '81:81'
    volumes:
      - npm_data:/data
      - npm_letsencrypt:/etc/letsencrypt
    environment:
      - TZ=Asia/Riyadh

volumes:
  npm_data:
  npm_letsencrypt:
hljs bash
docker compose up -d
docker ps | grep nginx-proxy-manager

تسجيل الدخول الأول

http://عنوان_IP_الخادم:81

بيانات الدخول الافتراضية:
البريد:    admin@example.com
كلمة المرور: changeme

سيُطلب منك تغيير كلمة المرور والبريد الإلكتروني عند أول تسجيل دخول.

إضافة Proxy Host

Proxy Host أساسي

  1. Proxy HostsAdd Proxy Host
  2. Domain Names: app.example.com
  3. Scheme: http
  4. Forward Hostname / IP: 192.168.1.10
  5. Forward Port: 3000
  6. Block Common Exploits: تفعيل
  7. Websockets Support: تفعيل لتطبيقات WebSocket

إضافة شهادة SSL

  1. SSL Certificate: Request a new SSL Certificate
  2. Force SSL: تفعيل
  3. HTTP/2 Support: تفعيل
  4. HSTS Enabled: تفعيل
  5. Save

البروكسي مع شبكة Docker

hljs yaml
version: '3.8'
services:
  npm:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: nginx-proxy-manager
    restart: unless-stopped
    ports:
      - '80:80'
      - '443:443'
      - '81:81'
    volumes:
      - npm_data:/data
      - npm_letsencrypt:/etc/letsencrypt
    networks:
      - proxy_network

  webapp:
    image: your-webapp:latest
    container_name: webapp
    expose:
      - "3000"
    networks:
      - proxy_network

networks:
  proxy_network:
    driver: bridge

volumes:
  npm_data:
  npm_letsencrypt:

قوائم الوصول

التحكم في الوصول حسب IP

  1. Access ListsAdd Access List
  2. Name: المسؤول فقط

في تبويب Access:

Allow: 192.168.1.0/24
Deny: all

مصادقة HTTP الأساسية

في تبويب Authorization:

اسم المستخدم: admin
كلمة المرور: كلمة_مرور_قوية123!

Redirection Host

  1. Redirection HostsAdd Redirection Host
  2. Domain Names: old.example.com
  3. Forward Domain: new.example.com
  4. HTTP Code: 301
  5. Preserve Path: تفعيل

Stream Host (بروكسي TCP/UDP)

  1. StreamsAdd Stream
  2. Incoming Port: 25565
  3. Forward Host: 192.168.1.50
  4. Forward Port: 25565
  5. TCP Forwarding: تفعيل

تكوين Nginx مخصص

تبويب Advanced

hljs nginx
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

client_max_body_size 100M;

proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

شهادة SSL Wildcard

  1. SSL CertificatesAdd SSL Certificate
  2. Domain Names: *.example.com
  3. Use a DNS Challenge: تفعيل
  4. DNS Provider: Cloudflare، DigitalOcean، إلخ.
  5. Credentials: أدخل رمز API

النسخ الاحتياطي والاستعادة

hljs bash
# نسخ احتياطي لبيانات NPM
docker exec nginx-proxy-manager tar -czf /tmp/npm-backup.tar.gz /data /etc/letsencrypt
docker cp nginx-proxy-manager:/tmp/npm-backup.tar.gz ./npm-backup-$(date +%Y%m%d).tar.gz

# الاستعادة
docker cp ./npm-backup.tar.gz nginx-proxy-manager:/tmp/
docker exec nginx-proxy-manager tar -xzf /tmp/npm-backup.tar.gz -C /
docker restart nginx-proxy-manager

التحديث

hljs bash
docker compose pull
docker compose up -d
docker image prune -f

توصيات الأمان

hljs bash
ports:
  - '80:80'
  - '443:443'
  - '127.0.0.1:81:81'

# الوصول عبر نفق SSH
ssh -L 81:localhost:81 user@server-ip

مع Nginx Proxy Manager على خوادم REXE، يمكنك إدارة جميع تطبيقات الويب من نقطة واحدة والحصول على شهادات SSL وتجديدها تلقائياً. تتيح واجهة الويب إعداد بروكسي عكسي احترافي دون التعامل مع ملفات تكوين Nginx.