NWSx में क्लाइंट_max_body_size बढ़ाना AWS इलास्टिक बीनस्टॉक पर निर्भर करता है


121

जब AWS इलास्टिक बीनस्टॉक पर चल रहे हमारे API से 10MB से बड़ी फ़ाइलों को पोस्ट करते हुए मैं "413 रिक्वेस्ट एंटिटी टू लार्ज" त्रुटियों में भाग रहा हूं ।

मैंने काफी शोध किया है और विश्वास करता हूं कि मुझे नग्नेक्स के लिए client_max_body_size की आवश्यकता है , हालांकि मैं इलास्टिक बीनस्टॉक का उपयोग करने के बारे में कोई दस्तावेज नहीं ढूंढ सकता हूं। मेरा अनुमान है कि इसे एक एबेटेंस फाइल का उपयोग करके संशोधित करने की आवश्यकता है।

किसी के पास इस बारे में कोई विचार है कि मैं सीमा कैसे बढ़ा सकता हूं? 10MB बहुत कमजोर है, इसे मैन्युअल रूप से ऊपर करने का एक तरीका होना चाहिए।


1
इन दिनों डिफ़ॉल्ट केवल 1MB है ...
rogerdpack

रिकॉर्ड के लिए सभी प्रदान किए गए समाधान .NET तैनाती से नहीं निपटते हैं। यदि आप AWS इलास्टिक बीनस्टॉक में .NET का उपयोग करते हैं, तो आपको अपने प्रोजेक्ट में IIS सेटिंग्स को कॉन्फ़िगर करना होगा। मेरे लिए मुझे अपने net471 ऐप में web.config को कॉन्फ़िगर करना था।
शमौन

जवाबों:


223

इसके लिए आप दो तरीके अपना सकते हैं। दुर्भाग्य से कुछ ईबी एप्लिकेशन प्रकारों के लिए कुछ काम करते हैं और कुछ दूसरों के लिए काम करते हैं।

AWS प्रलेखन में समर्थित / अनुशंसित

कुछ एप्लिकेशन प्रकारों के लिए, जैसे Java SE , Go , Node.js , और शायद Ruby (यह Ruby के लिए प्रलेखित नहीं है, लेकिन अन्य सभी Nginx प्लेटफ़ॉर्म इसका समर्थन करते हैं), Elasticbeanstalk में Nginx को कॉन्फ़िगर करने के तरीके की अंतर्निहित समझ है।

Elastic Beanstalk की डिफ़ॉल्ट nginx कॉन्फ़िगरेशन का विस्तार करने के लिए, .conf कॉन्फ़िगरेशन फ़ाइलों को .ebextensions/nginx/conf.d/अपने एप्लिकेशन स्रोत बंडल में नामित फ़ोल्डर में जोड़ें । इलास्टिक बीनस्टॉक के नग्नेक्स कॉन्फ़िगरेशन में इस फ़ोल्डर में .conf फाइलें स्वचालित रूप से शामिल हैं।

~/workspace/my-app/
|-- .ebextensions
|   `-- nginx
|       `-- conf.d
|           `-- myconf.conf
`-- web.jar

रिवर्स प्रॉक्सी को कॉन्फ़िगर करना - जावा एसई

विशेष रूप से अधिकतम अपलोड आकार बढ़ाने के लिए, फिर .ebextensions/nginx/conf.d/proxy.confआप जिस भी आकार को प्राथमिकता देंगे अधिकतम शरीर का आकार निर्धारित करने पर एक फ़ाइल बनाएँ :

client_max_body_size 50M;

सीधे Nginx config फ़ाइल बनाएँ

अद्भुत एडब्ल्यूएस समर्थन टीम के साथ काम करने के बहुत शोध और घंटों के बाद, मैंने .ebextensionsनगीन विन्यास को पूरक करने के लिए एक कॉन्फिग फ़ाइल बनाई । बड़े शरीर के आकार के लिए इस परिवर्तन की अनुमति है।

.ebextensionsनिर्देशिका के अंदर , मैंने 01_files.configनिम्नलिखित सामग्रियों के साथ एक फ़ाइल बनाई है :

files:
    "/etc/nginx/conf.d/proxy.conf" :
        mode: "000755"
        owner: root
        group: root
        content: |
           client_max_body_size 20M;

यह /etc/nginx/conf.d निर्देशिका के अंदर एक प्रॉक्सी.कॉन्फ़ फ़ाइल उत्पन्न करता है। प्रॉक्सी.कॉन्फ़ फ़ाइल में बस एक लाइनर client_max_body_size 20M;होता है जो चाल करता है।

ध्यान दें कि कुछ प्लेटफार्मों के लिए, यह फ़ाइल परिनियोजन के दौरान बनाई जाएगी, लेकिन बाद में परिनियोजन चरण में निकाल दी गई है।

आप अन्य निर्देशों को निर्दिष्ट कर सकते हैं जो नगीने दस्तावेज़ में उल्लिखित हैं।

http://wiki.nginx.org/Configuration

आशा है कि यह दूसरों की मदद करता है!


2
फ़ाइल प्रारूप docs.aws.amazon.com/elasticbeanstalk/latest/dg/… पर प्रलेखित है । प्रगति को /var/log/cfn-init.log पर लॉग किया गया है। लॉग में आपको कुछ इस तरह देखना चाहिए 2014-xx-xx xx:xx:xx,xxx [DEBUG] Writing content to /etc/nginx/conf.d/proxy.conf। मुझे यकीन नहीं है, लेकिन ऐसा लग रहा था कि सर्वर को पुनरारंभ करना आवश्यक हो सकता है।
h-kippo

2
प्यूमा के साथ मेरे लिए काम करना। @Will की तरह सेवा को फिर से शुरू करना पड़ा, हालांकि (sudo service nginx reload)।
डेनिस

1
उम्मीद है कि यह किसी और की मदद कर सकता है क्योंकि इसमें मुझे थोड़ी देर लगी
alexs

1
काम करने की पुष्टि करें, सुनिश्चित करें .ebextensionsकि अंदर नहीं है .ebignoreऔर .gitignoreservice मुझे नगनेक्स सेवा को फिर से शुरू करने की आवश्यकता नहीं है, eb deployऔर इसने
e

4
नोड जेएस के लिए, दूसरी विधि (फाइलें:) मेरे लिए काम करती है। पहले वाला काम नहीं करता था। यहां तक ​​कि नोड एड के
कपिल

33
files:
    "/etc/nginx/conf.d/proxy.conf" :
        mode: "000755"
        owner: root
        group: root
        content: |
           client_max_body_size 20M;

सुरक्षा के लिए उपरोक्त उत्तर को संशोधित (और वाक्यविन्यास गलत था, देखें, दो 'स्वामी:' YAML में प्रविष्टियाँ), दोस्तों, कृपया कुछ भी करने के लिए 777 अनुमतियां सेट न करें। जब तक आप हैक होने का आनंद नहीं लेते हैं, और Nginx config फ़ाइलों के स्वामी को रूट करने के लिए सेट करें।

तैनाती के बाद nginx पिकअप को बदलने के लिए नीचे दिए गए उत्तर को भी देखें ।


22

संपादित करें: जब आप निक पार्सन द्वारा स्वीकार किए गए उत्तर में निर्देशों के साथ एक बिल्ड को तैनात करते हैं, तो आपको परिवर्तनों को लेने के लिए nginx सर्वर को पुनरारंभ करना पड़ सकता है।

ऐसा करने के लिए, उदाहरण के लिए ssh करें और करें

sudo service nginx reload

पुनः लोड करने के बारे में अधिक जानने के लिए, http://nginx.org/en/docs/beginners_guide.html देखें ।

इलास्टिक बीनस्टॉक के पिछले संस्करण में, मैं इसे पूरा करने के लिए एक कंटेनर_कमांड जोड़ने में सक्षम था, लेकिन अब मैं @cdmckay की तरह पा रहा हूं, कि यह एक तैनाती विफलता का कारण बनता है। यदि आप अपने वातावरण का पुनर्निर्माण करते हैं, तो यह क्लाइंट_max_body_size सेटिंग्स के साथ-साथ उस अनुदेश को आपकी कॉन्फ़िग फ़ाइल में ले जाएगा।


क्या यह आवश्यक है? यदि आप इसे नहीं जोड़ते हैं, तो यह कैसे पुनरारंभ होगा?
cdmckay

मेरे अनुभव में मुझे यह आवश्यक लगा।
विल

@ cdmckay आप उदाहरण के बारे में अधिक कह सकते हैं कि पुनः लोड कमांड के कारण समस्याएँ?
विल

मैंने इसे बहुत करीब से नहीं देखा, लेकिन यह मूल रूप से मेरे सर्वर को लॉन्च करने से रोकता था जब तक कि मैंने इसे हटा नहीं दिया। यह आवश्यक प्रतीत नहीं होता है।
cdmckay

3
मेरे अनुभव में मैंने पाया कि यह आवश्यक था, फिर भी मुझे यह देखने के लिए एक चेक जोड़ना पड़ा कि क्या nginx नए उदाहरणों के लिए इसे पुनः आरंभ करने की कोशिश करने से पहले चल रहा था - 'pgrep nginx && सर्विस nginx reload || सच '
एलेक्स

16

स्वीकार किए गए उत्तर ने मेरे लिए काम नहीं किया क्योंकि मेरे पास एक JVM- आधारित ऐप है और यह NGINX कॉन्फ़िगरेशन को अलग तरीके से करता है। मुझे तैनाती के दौरान एक प्रॉक्सी.कॉन्फ़ फ़ाइल बनती दिखाई देगी, लेकिन बाद में तैनाती पूरी होने से पहले हटा दी गई। AWS प्रलेखन बताता है कि प्रॉक्सी को कैसे कॉन्फ़िगर किया जाए :

एक ऐसी .ebextensions/nginx/conf.d/proxy.confफ़ाइल बनाएँ जिसमें सिर्फ रेखा हो:client_max_body_size 40M;


2
दुर्भाग्य से, यह मेरे लिए काम नहीं किया (एकल-कंटेनर डॉकर ELB) - उदाहरण के एक रिबूट के बाद भी नहीं। SSH के माध्यम से उदाहरण के लिए लॉगिंग नहीं है। कोई प्रॉक्सी नहीं है। फाइल को बनाया नहीं जा रहा है/etc/nginx/conf.d/
Udo G

मैं यह मान रहा हूं कि इस तथ्य के कारण कि आप डॉकर ईएलबी का उपयोग कर रहे हैं और यह नग्नेक्स को अलग तरह से परिभाषित करता है। मेरा उत्तर जावा-प्रीसेट ईएलबी के लिए है।
रेमंड 26

मैं एल्ब और जावा ऐप का उपयोग कर रहा हूं। मेरे लिये कार्य करता है! धन्यवाद!
दिमित्र वुकमन

आप प्रॉक्सी.कॉन्फ़ फ़ाइल को कैसे बनाया जा सकता है, इसकी अस्थायी उपस्थिति को ध्यान में रखते हुए देख सकते हैं?
रोजरपैक

9

स्वीकृत उत्तर के बाद, आपको nginx config फ़ाइल को पुनः लोड करने की आवश्यकता हो सकती है।

ऐसा करने के लिए निम्न आदेश जोड़ें

   container_commands:
      01_reload_nginx:
        command: "service nginx reload"

यह आपके ईबी उदाहरण में ssh'ing और मैन्युअल रूप से कमांड के साथ करने से बेहतर अभ्यास होगा।

स्वीकृत उत्तर के साथ इसने मेरे लिए एक ही मुद्दे को हल कर दिया। (रेल, प्यूमा, एनजीआईएनएक्स)


7

मेरे लिए काम करने वाली एकमात्र चीज अंदर एक ".config" फ़ाइल बनाना था। इस तरह के संदर्भ:

.ebextensions/
           proxy.config

केवल .config फ़ाइल में इस सामग्री के साथ:

files:
  "/etc/nginx/conf.d/proxy.conf":
     content: |
       client_max_body_size 50M;

सबफ़ोल्डर्स के लिए कोई ज़रूरत नहीं है, एप्लिकेशन सर्वर को पुनरारंभ करने की कोई आवश्यकता नहीं है, ध्यान दें कि ".config" नहीं ".conf" फ़ाइल अंदर है।। शुल्क और तनावों से बचने के लिए उचित इंडेंटेशन का उपयोग करें ताकि कंसोल को आराम मिल सके। फ़ाइल का नाम मायने नहीं रखता,

इसके लिए धन्यवाद: http://kroltech.com/2014/09/14/quick-tip-increase-upload-size-in-aws-elastic-beanstalk-node-js-env/


6

मैंने .ebextensionsकार्यान्वयन स्तर कॉन्फ़िगरेशन को जोड़ने की सभी विधि की कोशिश की है और इसने मुझे नवीनतम अमेज़ॅन लिनक्स एएमआई में मदद नहीं की है। मैंने बहुत शोध किया है और लॉग के माध्यम से जाने के बाद मैं पा सकता हूं कि तैनाती का कार्य धावक .platformहर नाम के एक फ़ोल्डर के लिए जाँच कर रहा है और मैंने केवल .ebextensions की तरह एक जोड़ने के बारे में सोचा। नीचे मेरी परियोजना के रूट फ़ोल्डर में की गई सेटिंग्स है।

अपने प्रोजेक्ट फ़ोल्डर के रूट स्तर में नीचे फ़ोल्डर सेटअप जोड़ें।

फ़ोल्डर संरचना (.platform / nginx / conf.d /xy.conf)

.platform/
         nginx/
              conf.d/
                    proxy.conf
         00_myconf.config

फ़ाइल 1 की सामग्री - proxy.conf (अंदर .platform/nginx/conf.d/फ़ोल्डर)

client_max_body_size 50M;

फ़ाइल 2 की सामग्री - 00_myconf.config ( .platform/फ़ोल्डर के अंदर )

container_commands:
  01_reload_nginx:
    command: "service nginx reload"

एक्सटेंशन के साथ पूर्ण देखभाल करें। पहली फ़ाइल .conf है और दूसरी फ़ाइल .config है

अब अपने प्रोजेक्ट को Amazon Elastic Beanstalk पर फिर से डालें और आप जादू देखेंगे। यह कॉन्फ़िगरेशन आपके सभी EC2 उदाहरणों में जोड़ा जाएगा, जिसे ऑटो स्केलिंग के भाग के रूप में बनाया गया है।

नीचे विस्तृत फ़ोल्डर संरचना।

यहाँ छवि विवरण दर्ज करें


2
आदमी!!!!!!!! बहुत बहुत धन्यवाद। यह एडब्ल्यूएस ईबी अमेज़ॅन लाइनक्स में नेगनेक्स कॉन्फ़िगरेशन सेट करने का एकमात्र तरीका है। मैंने हर उपलब्ध समाधान की कोशिश में पूरा दिन बर्बाद कर दिया !!! मैं इस उत्तर को विस्तार से लिखने के लिए समय निकालने के लिए धन्यवाद कैसे व्यक्त कर सकता हूं। तुम्हें आशीर्वाद देते हैं। यदि आपके पास किसी तरह का पेट्रॉन या ब्यूमेकॉफी खाता है तो इल का योगदान है। @ जिजो क्लीटस
अनंत

2
बहुत बहुत धन्यवाद। मैंने भी सभी संभव तरीकों का उपयोग करने की कोशिश की .ebextensionsऔर केवल इस दृष्टिकोण ने काम किया।
अरुणध्वज

मुझे परीक्षण और काम करने के लिए हो रही विफलताओं के टन बचाया। आप पर्याप्त धन्यवाद नहीं कर सकते!
जलाल एल-शायर

बहुत बहुत धन्यवाद, यह एक स्प्रिंग बूट आवेदन के लिए भी काम किया; लोचदार बीन्स टॉक बकरी चल रहा है। मेरे टैब पर एक बीयर रखें :)।
अजी

5

स्वीकृत उत्तर मेरे लिए काम नहीं करता था, इसलिए इसके बजाय मैं अपने साथ नग्नेक्स कॉन्फ़िगरेशन को ओवररोड करता हूं।

मैंने nginx.confडायरेक्टरी के तहत एक फाइल बनाई.ebextensions/nginx/

मैंने अपने बीनस्टॉक ऐप के एक चालू उदाहरण में SSHed किया, और टर्मिनल से nginx.confफाइल और कॉपी करने की सामग्री की cat /etc/nginx/nginx.confनकल की।

मैंने उस सामग्री को nginx.confफ़ाइल में चिपकाया था जिसे मैंने पहले बनाया था .ebextensions/nginx/और इसमें शामिल करने के लिए http निर्देश को संशोधित किया था client_max_body_size 50M;। मैंने आखिरकार अपने ऐप का उपयोग करके eb deployइसे फिर से तैयार किया और यह काम कर गया। आपको तैनाती के दौरान निम्न संदेश प्राप्त करना चाहिए:

जानकारी: '.ebextensions / nginx' निर्देशिका में Nginx कॉन्फ़िगरेशन का पता चला। AWS इलास्टिक बीनस्टॉक अब इस वातावरण के लिए Nginx कॉन्फ़िगरेशन का प्रबंधन नहीं करेगा।

ये मेरी .ebextensions/nginx/nginx.confफ़ाइल की सामग्री हैं :

# Elastic Beanstalk Nginx Configuration File

user                    nginx;
error_log               /var/log/nginx/error.log warn;
pid                     /var/run/nginx.pid;
worker_processes        auto;
worker_rlimit_nofile    33193;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    include       conf.d/*.conf;

    map $http_upgrade $connection_upgrade {
        default     "upgrade";
    }

    server {
        listen        80 default_server;
        access_log    /var/log/nginx/access.log main;

        client_header_timeout 60;
        client_body_timeout   60;
        keepalive_timeout     60;
        gzip                  off;
        gzip_comp_level       4;
        gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;

        # Include the Elastic Beanstalk generated locations
        include conf.d/elasticbeanstalk/*.conf;
    }

    client_max_body_size 50M;
}

मुझे नगनेक्स सेवा को फिर से शुरू नहीं करना पड़ा और न ही पर्यावरण।

नोट : सुनिश्चित करें कि आपकी .ebextensions तैनाती के दौरान बीनस्टॉक पर बनाई गई .zip फ़ाइल का हिस्सा है और इसे ( यदि आप इसका उपयोग कर रहे हैं .gitignoreया नहीं तो इसे अनदेखा नहीं .ebignoreकिया गया)।


इसके लिए धन्यवाद! मैं सोच रहा था कि आप किस मंच का उपयोग कर रहे थे? किसी कारण से बीनस्टॉक मेरे `.Ebextensions / nginx / nginx.conf` फ़ाइल का पता नहीं लगा रहा है, भले ही यह ज़िप फ़ाइल और गिट रेपो में हो।
आइसीड

नोट के लिए अपग्रेड किया गया। मैं इस बात को नज़रअंदाज़ कर रहा था कि .ebextensionsकिस कारण से स्वीकार किया गया और लोकप्रिय उत्तर विफल हो गया। मैंने आपके द्वारा
बताई गई

3

यह AWS प्रदान किया गया समाधान है , और यह काम करता है (अपनी आवश्यकताओं के लिए आकार को समायोजित करें)

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/enact/12_add_nginx_configuration.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      /bin/echo "client_max_body_size 50M;" > /etc/nginx/conf.d/proxy.conf
      /sbin/service nginx reload

2

वैकल्पिक रूप से आप प्रॉक्सी सर्वर को अपाचे में बदल सकते हैं। ऐसा करने के लिए, कॉन्फ़िगरेशन पर जाएं और सॉफ़्टवेयर कॉन्फ़िगरेशन को संपादित करें। यहां पहला विकल्प "प्रॉक्सी सर्वर" है, "अपाचे" चुनें।


अपलोड की गई फ़ाइलों का अधिकतम आकार सेट करने के लिए Apache के पास स्वयं LimitRequestBody निर्देश है।
टॉम हार्वे

@TomHarvey यदि उपलब्ध हो, तो क्या आप कृपया उपयोग के मामले के लिए एक पूर्ण उदाहरण प्रदान करेंगे LimitRequestBody?
हसन

1

गोबर के बिना गोदी के लिए मैंने इन निर्देशों का पालन किया था:

रिवर्स प्रॉक्सी को कॉन्फ़िगर करना

यदि आप nginx.conf http ब्लॉक में उन लोगों के अलावा निर्देश शामिल करना चाहते हैं, तो आप .ebextensions/nginx/conf.d/अपने स्रोत बंडल की निर्देशिका में अतिरिक्त कॉन्फ़िगरेशन फ़ाइलें भी प्रदान कर सकते हैं । इस निर्देशिका की सभी फाइलों में .conf एक्सटेंशन होना चाहिए। http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/go-environment.html#go-complex-apps

मैंने अपने प्रोजेक्ट के मूल proxy.confमें फ़ाइल बनाई .ebextensions/nginx/conf.d/, जिसमें बस 1 पंक्ति अंदर थी:

client_max_body_size 20M;

यदि यह अभी भी काम नहीं करता है, तो सुनिश्चित करें कि .ebextensionsफ़ोल्डर और उप-फ़ोल्डर आपकी तैनाती ज़िप में शामिल हैं। मैन्युअल रूप से Nginx को पुनरारंभ करने की आवश्यकता नहीं है।


1

मैं एक ही मुद्दे के साथ संघर्ष कर रहा था, लेकिन इसे हल करने में सक्षम नहीं था, आखिरकार यह काम कर रहा था।

यहाँ मेरी congfig फ़ाइल है,

files:
  "/etc/nginx/conf.d/01_proxy.conf":
    mode: "000755"
    owner: root
    group: root
    content: |
      client_max_body_size 50M;
      client_body_buffer_size 16k;

container_commands:
  01_reload_nginx:
    command: "sudo service nginx reload"

मुद्दा था,

मैं कोड पाइपलाइन के लिए एक पायथन स्क्रिप्ट का उपयोग कर रहा था जिसमें बिल्ड बनाते समय .extxtensions फ़ोल्डर शामिल नहीं है।

यहाँ मेरे कुछ सेंट हैं,

  1. सुनिश्चित करें कि आपका .ebextensions फ़ोल्डर आपके बिल्ड के ज़िप फ़ोल्डर में शामिल है जो आपके aws खाते के s3bucket में स्थित है
  2. सुनिश्चित करें कि यह .gitignore फ़ाइल में नहीं है
  3. यदि आप एक स्क्रिप्ट का उपयोग कर रहे हैं तो यह सुनिश्चित करने के लिए कि यह शामिल है

1

यह पता लगाने की कोशिश करने के 3 दिनों के बाद, मैं अद्भुत एडब्ल्यूएस समर्थन टीम के साथ एक कॉल पर कूद गया और उन्होंने मुझे कुछ सुराग दिए कि इसे कैसे हल किया जाए। सबसे पहले, मेरा प्रोजेक्ट जावा में है और मैं इसे इलास्टिक बीनस्टॉक (ईबीएस) के माध्यम से चलाने के लिए मावेन और स्प्रिंग बूट का उपयोग करता हूं।

  1. जैसा कि AWS के डॉक्यूमेंटेशन में बताया गया है , आपको अपने प्रोजेक्ट के रूट स्तर में कस्टम नेगनेक्स सेटिंग्स को जमा करने की आवश्यकता है। ऐसा करने के लिए कि मैंने एक ग्राहक_max_body_size.conf फ़ाइल बनाई है और इसे निम्न पथ में रखा है: myprojectname /src/main/resources/ebextensions/nginx/conf.d/clcl_max_body_size.conf इस फ़ाइल में केवल निम्न पंक्ति है:

    client_max_body_size 10M;
    
  2. बिल्ड के दौरान मेरे प्रोजेक्ट के रूट फ़ोल्डर में इस फ़ाइल को जोड़ने के लिए मावेन को कॉन्फ़िगर करें। यह थोड़ा मुश्किल था, मुझे अपने POM.xml में निम्न कॉन्फ़िगरेशन ( स्रोत ) जोड़ने की आवश्यकता थी :

    <plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>3.1.0</version>
    <executions>
        <execution>
            <id>copy-resources</id>
            <!-- here the phase you need -->
            <phase>validate</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>${basedir}/target/.ebextensions</outputDirectory>
                <resources>
                    <resource>
                        <directory>src/main/resources/ebextensions</directory>
                        <filtering>true</filtering>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
    

  3. अब आप पहले से ही स्थानीय रूप से अपनी परियोजना का निर्माण कर सकते हैं और यह पुष्टि करने के लिए कि यह वास्तव में आपकी परियोजना की जड़ में स्थित है, निम्नलिखित एसएसएच कमांड चला सकते हैं:

    jar tf main-1.0-SNAPSHOT.jar | grep .ebextensions
    
  4. अब यह मुश्किल हिस्सा है। जब आप इसे ईबीएस पर अपलोड करते हैं, तो आपकी फ़ाइल में केवल SNAPSHOT.jar फ़ाइल और .ebextensions फ़ोल्डर होना चाहिए। उदाहरण के लिए, यदि अब आप जार फ़ाइल और फ़ोल्डर को ज़िप करेंगे और इसे मैन्युअल रूप से अपलोड करेंगे, तो यह काम करेगा!

  5. चूंकि मैं अपनी तैनाती के लिए जेनकींस का उपयोग कर रहा हूं, और विशेष रूप से एडब्ल्यूएस ईबीएस तैनाती प्लगिन - आपको तैनाती में शामिल फ़ाइलों / फ़ोल्डर की सेटिंग्स को बदलने की आवश्यकता है। अब किसी कारण से मैं .bextensions फ़ोल्डर को शामिल करने में सक्षम नहीं था, इसलिए मैंने फ़ोल्डर और .jar फ़ाइल को छोड़कर बाकी सभी चीजों को छोड़ दिया। यहाँ छवि विवरण दर्ज करें

यह काम!


1

Client_max_body_size के अलावा, मुझे client_body_buffer_size जोड़ना था । यहाँ 2 MB अनुलग्नक के लिए काम किया गया डॉट कॉन्फिग फ़ाइल है:

फ़ाइलें: "/etc/nginx/conf.d/proxy.conf":
मोड: "000755"
मालिक: रूट
समूह: मूल
सामग्री: |
xy_buffering on;
xy_buffer_size 128k;
प्रॉक्सी_बफर्स ​​8 256k;
client_body_buffer_size 2M;
प्रॉक्सी_बस_बफर्स_साइज़ 256k;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
client_max_body_size 3M;


0

जावा प्लेटफार्म के लिए

NGINX config प्रॉक्सी फ़ाइल बनाने के लिए आपको बस जोड़ना चाहिए

.ebextension/nginx/conf.d/proxy.conf फ़ाइल

इसमें सामग्री के साथ client_max_body_size 20M;

"प्रॉक्सी.कॉन्फ़" को "/etc/nginx/conf.d/proxy.conf" पर तैनात किया जाएगा और स्वचालित रूप से NGINX कॉन्फिगरेशन द्वारा शामिल किया जाएगा।


0

यदि आप EC2 चला रहे हैं और स्वयं nginx स्थापित कर रहे हैं, तो आपका सबसे अच्छा समाधान एक नई फ़ाइल बनाना है

/etc/nginx/conf.d

फ़ोल्डर:

sudo nano /etc/nginx/conf.d/proxy.conf

और फिर वहां निम्न पंक्ति जोड़ें:

client_max_body_size 20M;

तब सहेजें और nginx को पुनरारंभ करें:

sudo systemctl restart nginx

यह चारों ओर का काम है, लेकिन एलास्टिक बीनस्टॉक एक नया उदाहरण बनाता है, आपको प्रत्येक उदाहरण में यह कॉन्फ़िगरेशन देना होगा। और यह व्यावहारिक रूप से संभव नहीं है क्योंकि हमें लगातार EC2 इरादों की निगरानी करने की आवश्यकता है और nginx पुनरारंभ प्रक्रिया हर बार अच्छी नहीं होती है
Jijo Cleetus
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.