Shinyproxy: الوكيل العكسي nginx لا يعمل

تم إنشاؤها على ١٥ يناير ٢٠٢١  ·  7تعليقات  ·  مصدر: openanalytics/shinyproxy

أحاول نشر تطبيق على الإنترنت عبر وكيل عكسي nginx. تم وضع تطبيقي في حاوية بالكامل وملف تكوين nginx الخاص بي في / etc / nginx / sites-available يطابق مثال shinyproxy هنا: https://www.shinyproxy.io/security/

الخادم {
استمع 80
server_name shinyproxy.yourdomain.com ؛
إعادة كتابة ^ (. *) https: // $ server_name $ 1 دائم ؛
}

الخادم {
استمع 443 ؛
server_name shinyproxy.yourdomain.com ؛
access_log /var/log/nginx/shinyproxy.access.log ؛
error_log /var/log/nginx/shinyproxy.error.log خطأ ؛

تشغيل SSL
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 ؛

ssl_certificate /etc/ssl/certs/yourdomain.com.crt ؛
ssl_certificate_key /etc/ssl/private/yourdomain.com.key ؛

موقعك / {
proxy_pass http://127.0.0.1 : 8080 / ؛

   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "upgrade";
   proxy_read_timeout 600s;

   proxy_redirect    off;
   proxy_set_header  Host             $http_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;
 }

}

نطاقي لديه شهادة https وإذا قمت بزيارة نطاقي أرى رسالة "مرحبًا بك في nginx!" شاشة. ومع ذلك ، بعد تشغيل تطبيقي للاستماع على المنفذ 8080 بالأمر:
docker run -d -v /var/run/docker.sock:/var/run/docker.sock --net wind_net -p 8080:8080 wind_container
إذا قمت بزيارة المجال الخاص بي ما زلت أرى "مرحبًا بك في nginx!" شاشة. لا يقوم Nginx بتمرير نطاقي إلى تطبيقي اللامع. أي أفكار حول لماذا عكس الوكيل لا يعمل؟ هل أطلقت تطبيقي اللامع المعبأ في حاويات إلى المنفذ الخطأ؟

question

التعليق الأكثر فائدة

لقد حللت المشكلة. لم يكن Nginx يعرض تطبيق shinyproxy لأنني أهملت ربط ملف تكوين nginx الخاص بي في / etc / nginx / sites-available / to / etc / nginx / sites-enabled. بعد ربط التكوين الخاص بي في كلا المجلدين باستخدام الأمر ls -s وإزالة ملف التكوين الافتراضي من / etc / nginx / sites-enabled ، تم عرض تطبيق shinyproxy في نطاقي.

ال 7 كومينتر

يقوم توجيه proxy_pass الخاص بالمحرك العكسي بالتوجيه إلى الشبكة المحلية للجهاز المضيف (127.0.0.1). عندما تقوم بتجميع تطبيقاتك في حاويات ، فإنك تنتقل من شبكة المضيف المحلي إلى شبكة النظام البيئي لعمال السفن. وهكذا ، كيف تبدأ وتنشر shinyproxy الخاص بك لاستضافة الأمور. تحقق من هذه المقالة على الشبكات في عامل ميناء

شكرا للمساعدة. ما زلت لم أجد حلًا بعد قراءة المقالة والقيام ببعض استكشاف الأخطاء وإصلاحها. هل أحتاج إلى تغيير 127.0.0.1 جزء من تصريح مرور الوكيل؟ أو هل أحتاج إلى تدوير حاوية عامل الإرساء للاستماع إلى مكان آخر بخلاف 8080: 8080؟

كيف تبدأ shinyproxy الخاص بك؟

مرحبًا @ lucius-verus-fan

فقط للتأكد ، باستخدام الأمر التالي ، تحاول بدء ShinyProxy ، أليس كذلك؟

 docker run -d -v /var/run/docker.sock:/var/run/docker.sock --net wind_net -p 8080:8080 wind_container

إذن ، wind_container عبارة عن حاوية عميل قمت بإنشائها تحتوي على ShinyProxy؟

في هذه الحالة ، لا أعتقد أن المشكلة تتعلق بشبكات Docker ، يضمن الجزء -p 8080:8080 من الأمر إعادة توجيه المنفذ 8080 إلى جهازك المحلي ، بصرف النظر عن شبكة Docker التي تعمل فيها الحاوية.

بدلاً من ذلك ، أعتقد أن الخطأ موجود في تكوين nginx الخاص بك ، يجب عليك تغيير هذه الأسطر لتتوافق مع الإعداد الخاص بك:

server_name shinyproxy.yourdomain.com;
rewrite ^(.*) https://$server_name$1 permanent;
# a few lines lower
server_name shinyproxy.yourdomain.com;

يجب عليك تحديد اسم المجال الصحيح لخادمك هناك. أنت الآن تخبر nginx بمعالجة أي طلب على shinyproxy.yourdomain.com كطلب إلى ShinyProxy ، أي طلب آخر سينتج عنه 404. وبالتالي ، نظرًا لأنك لا تصل إليه أكثر من shinyproxy.yourdomain.com nginx ستعطي 404.

مرحبًا LEDfan و @ jaysnm

الأمر الذي أستخدمه لبدء ShinyProxy هو:
docker run -d -v /var/run/docker.sock:/var/run/docker.sock --net wind_net -p 8080:8080 wind_container

تكوين nginx الذي أرفقته في تعليقي الأول ليس تكوين nginx الذي أستخدمه ، هذا هو المثال الوارد على موقع shinyproxy. سأرفق ملف تكوين nginx الذي أستخدمه أدناه.

server {
  listen                80;
  server_name           windts.app www.windts.app;
  rewrite     ^(.*)     https://$server_name$1 permanent;
}

server {
  listen                443 ssl;
  server_name           windts.app www.windts.app;
  access_log            /var/log/nginx/shinyproxy.access.log;
  error_log             /var/log/nginx/shinyproxy.error.log error;

  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

  ssl_certificate       /etc/ssl/certs/windts.app.crt;
  ssl_certificate_key   /etc/ssl/private/windts.app.key;

   location / {
       proxy_pass          http://127.0.0.1:8080/;

       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "upgrade";
       proxy_read_timeout 600s;

       proxy_redirect    off;
       proxy_set_header  Host             $http_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;
     }

}

عند زيارة المجال windts.app أو www.windts.app ، يتم إرسالك إلى صفحة الترحيب في Nginx بدلاً من تمريرها إلى تطبيق shinyproxy. يعمل التطبيق بشكل صحيح محليًا وكذلك على خادم بعيد. إنها ببساطة مسألة توصيل المجال بالحاوية التي تشغل تطبيق shinyproxy.

لقد حللت المشكلة. لم يكن Nginx يعرض تطبيق shinyproxy لأنني أهملت ربط ملف تكوين nginx الخاص بي في / etc / nginx / sites-available / to / etc / nginx / sites-enabled. بعد ربط التكوين الخاص بي في كلا المجلدين باستخدام الأمر ls -s وإزالة ملف التكوين الافتراضي من / etc / nginx / sites-enabled ، تم عرض تطبيق shinyproxy في نطاقي.

للتسجيل ، إنه ln -s [كذا] ، ولكن شكرًا لمشاركة التعليقات وحسن حل مشكلتك!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات