صعوبة في تهيئة discourse مع reverse proxy

تم تثبيت Wikijs (Docker compose) و Discourse.

كان Wikijs يعمل بشكل جيد، وكان وكيل العكس (reverse proxy) يعمل أيضًا.
بدأت في تثبيت Discourse وكان يواجه مشكلة. لذلك بحثت ووجدت أنه قد يكون شيئًا متعلقًا بتثبيت docker عند تثبيت Ubuntu لأول مرة.

لذلك أوقفت docker الخاص بـ Wikijs للتحديث. أعدت تثبيت كل شيء من مستودع Dockers. بدأت تشغيل Wikijs ولم تكن هناك أي أخطاء يمكنني رؤيتها.
قمت أيضًا بتشغيل Discourse هذه المرة وتمكن من إكمال تسلسل الإقلاع بالكامل. لذا أحاول الوصول إلى المواقع. Nginx موجود على خادم آخر لذلك لم ألمس وكلاء العكس (reverse proxies). خمن ماذا؟ لا يمكنني الوصول إليهم من أسماء النطاقات أو من localip:port.

أنا مرتبك تمامًا بشأن ما هو الخطأ حيث أن كلاهما يقول إنهما يعملان وكان Wikijs يسمح لي بالاتصال سابقًا. كنت قريبًا جدًا. :') Syslog لا يقول شيئًا عن هذين الاثنين أيضًا.

فيما يلي بعض المعلومات الإضافية.

وكلاء العكس (Reverse proxies):

server {
        listen 80;
        listen [::]:80;

        root /var/www/website.co.uk/html;
        index index.html index.htm index.nginx-debian.html;

        server_name website.co.uk www.website.co.uk;

        location / {
                rewrite ^(/.*)\.html(\?.*)?$ $1$2 permanent;
                rewrite ^/(.*)/$ /$1 permanent;
                try_files $uri/index.html $uri.html $uri/ $uri =404;
        }

        location /css {
                alias /var/www/website.co.uk/html/css;
        }

        location /images {
                alias /var/www/website.co.uk/html/media/images;
        }

        location /videos {
                alias /var/www/website.co.uk/html/media/videos;
        }

        location /music {
                alias /var/www/website.co.uk/html/media/music;
        }

        location /fonts {
                alias /var/www/website.co.uk/html/media/fonts;
        }

        location /scripts {
                alias /var/www/website.co.uk/html/scripts;
        }
}

server {
        listen 80;
        server_name wiki.website.co.uk;

        #ssl_certificate           /etc/nginx/cert.crt;
        #ssl_certificate_key       /etc/nginx/cert.key;

        #ssl on;
        #ssl_session_cache  builtin:1000  shared:SSL:10m;
        #ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
        #ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
        #ssl_prefer_server_ciphers on;

        location / {
                proxy_set_header        Host $host;
                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;

                proxy_pass      http://internalip:port;
                proxy_read_timeout 90;

                proxy_redirect http://127.0.0.1 https://internalip:port;
        }
}
server {
        listen 80;
        server_name forums.website.co.uk;

        #ssl_certificate           /etc/nginx/cert.crt;
        #ssl_certificate_key       /etc/nginx/cert.key;

        #ssl on;
        #ssl_session_cache  builtin:1000  shared:SSL:10m;
        #ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
        #ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
        #ssl_prefer_server_ciphers on;

        location / {
                proxy_set_header        Host $host;
                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;

                proxy_pass      http://internalip:port2;
                proxy_read_timeout 90;

                proxy_redirect http://127.0.0.1 https://internalip:port2;
        }
}

النفق (Tunnel) مثبت على نفس الجهاز الذي يوجد عليه Discourse و Wikijs ولكنني أشك في أن هذه هي المشكلة لأنني كنت أستخدمه لفترة طويلة دون مشاكل.
عند زيارة المنتديات أواجه رسالة “بوابة سيئة” (Bad gateway). ومع الويكي أحصل على مهلة 504 (504 timeout) من Nginx.

أي مساعدة في هذا ستكون موضع تقدير كبير. :slight_smile:
شكرًا، Blood.

إعجاب واحد (1)

داخل ملف app.yml، هل أقوم بتغيير هذه المنافذ:

expose:
  - "80:80"   # http
  - "443:443" # https

إلى شيء مثل:

expose:
  - "8000:80"   # http
  - "8080:443" # https

حيث 8000 هو المنفذ الذي أريده أن يبحث عنه من جهاز Nginx الرئيسي.
هذا هو الشيء الوحيد الذي يدور في ذهني وقد اختبرت ولم يبدو أنه يعمل. (أعدت بناء تطبيق Discourse).

إعجاب واحد (1)

انظر تشغيل مواقع ويب أخرى على نفس الجهاز مثل Discourse
تحتاج إلى إزالة قوالب ssl و let’s encrypt. يحتاج nginx الخاص بك إلى القيام بـ ssl ويحتاج Discourse فقط إلى المنفذ 80 لكي يتصل به الوكيل.

إعجاب واحد (1)

هل سينجح هذا على نفس الشبكة المنزلية وليس على نفس الجهاز بسبب عدم وجودهما فعليًا على نفس الجهاز؟ :slight_smile:

أفترض أن هذا له علاقة بكيفية إصلاح هذا؟
“لا يمكنك استخدام ./discourse-setup لإعداد Discourse إذا كان خادم آخر يستخدم المنفذ 80 أو 443. ستحتاج إلى نسخ وتعديل samples/standalone.yml باستخدام محرر النصوص المفضل لديك.”
هذا من الدليل المقدم. بما أنني أقوم بتشغيل Nginx على هذا الخادم المختلف.

إعجاب واحد (1)