উজানের পড়ার সময় অনুমতি অস্বীকার করা হয়েছে


40

আমরা আমাদের রেল অ্যাপ্লিকেশনগুলিকে এনজিনেক্স এবং যাত্রীর উপর স্থাপন করেছি ter

2011/02/14 05:49:34 [crit] 25389#0: *645 open() "/opt/nginx/proxy_temp/2/02/0000000022" failed (13: Permission denied) while reading upstream, client: x.x.x.x, server: y.y.y.y, request: "GET /signup/procedures?count=0 HTTP/1.1", upstream: "passenger:unix:/passenger_helper_server:", host: "y.y.y.y", referrer: "http://y.y.y.y/signup/procedures"


আপনি লগ স্তরটি ডিবাগ এ সেট করতে পারেন: nginx.org/en/docs/debugging_log.html
রিমিয়ান

উত্তর:


39

এনজিআইএনএক্স / পিএইচপি-এফপিএম সেটআপে আমার একই সমস্যা ছিল (পিএইচপি-এফপিএম = পিএইচপি-র জন্য উন্নত এফসিজি)।

এনগিনেক্স প্রসেসগুলি কোন ব্যবহারকারী হিসাবে চলছে তা আপনি খুঁজে পেতে পারেন

ps aux | grep "nginx: worker process"

এবং তারপরে আপনার প্রক্সি ফাইলগুলির অনুমতিগুলি সঠিক কিনা তা পরীক্ষা করে দেখুন

ls -l /opt/nginx/proxy_temp/

আমার ক্ষেত্রে, এনজিনেক্স হিসাবে চলছিল www-dataএবং আমার প্রক্সি ডিরেক্টরিতে দুটি ডিরেক্টরি মূলের অন্তর্ভুক্ত।

আমি জানি না কীভাবে এটি এখনও ঘটেছে, তবে আমি এটি (মূল হিসাবে) করে এটি স্থির করেছি

chown www-data.www-data /opt/nginx/proxy_temp

4
সবচেয়ে ভালো সমাধান!
ইফকান

কেন এটি এখনও গৃহীত হয়নি?
কিশোর পাওয়ার

1
যারা # ওপেনারসিটি ব্যবহার করেন - "www-ডেটা ডুবিয়ে দিন: www-ডেটা -আর / ইউএসআর / লোকাল / ওপেনেরস্টি / এনগিনেক্স / * _ টেম্পে"
বিজি ব্রুনো

1
আমি আমার এনগিনেক্স প্রক্রিয়া বন্ধ করে দিয়ে ফোল্ডারের নাম পরিবর্তন করে অন্য নামে রেখেছি, এনজিনেক্স প্রক্রিয়া পুনরায় শুরু করেছি এবং এটি সঠিক অনুমতি নিয়ে ফোল্ডারটি আবার তৈরি করেছে। মোহন মত কাজ!
চিরায়ু শিশোদিয়া

8

আপনি সম্ভবত ব্যবহারকারী রুট দিয়ে শুরু করেছেন, তারপরে এটি পরিবর্তন করেছেন। এখন সমস্যাটি হ'ল ক্যাশে ফোল্ডারগুলি, অর্থাৎ

/var/cache/nginx/client_temp
/var/cache/nginx/fastcgi_temp
/var/cache/nginx/proxy_temp
/var/cache/nginx/scgi_temp
/var/cache/nginx/uwsgi_temp

ইতিমধ্যে রুটের মালিকানাধীন, তাই আপনার এনগিনেক্স (বা আপনি যেটিতে স্যুইচ করার চেষ্টা করছেন) ব্যবহারকারী তাদের কাছে access০০ এর অনুমতি থাকা কোজে অ্যাক্সেস করতে পারবেন না।

সুতরাং সমাধান সহজ। Nginx থামুন, তারপরে:

rm -rf /var/cache/nginx/*

বা আপনার ডিস্ট্রো এবং প্রকাশের পথে যা কিছু হোক। তারপরে nginx পুনরায় চালু করুন যা উপযুক্ত অনুমতি নিয়ে এই ফোল্ডারগুলি পুনরায় তৈরি করবে।


8

আপনি সঠিক ব্যবহারকারী এবং গোষ্ঠী নির্দিষ্ট করে দিচ্ছেন কিনা তা নিশ্চিত করতে nginx.conf ফাইলটিও পরীক্ষা করে দেখুন।

আমার একটি সমস্যা ছিল যেখানে ডিরেক্টরিতে অনুমতিগুলি ব্যবহারকারীর নাম / এনগিনেক্সের জন্য সেটআপ করা হয়েছিল, তবে nginx.conf ব্যবহারকারী কেবলমাত্র ব্যবহারকারীর নাম নির্দিষ্ট করেছেন। ডিফল্টরূপে, কোনও গোষ্ঠী যদি ব্যবহারকারী নির্দেশকে না দেওয়া হয় তবে এটি ব্যবহারকারীর মতো একই নাম ব্যবহার করে। সুতরাং, ব্যবহারকারীর নাম / ব্যবহারকারীর নাম ব্যবহারকারীর নাম / nginx পরিবর্তে একটি ডিরেক্টরি অ্যাক্সেস করার চেষ্টা করছিল। কনফিগার আপডেট করা আমার সমস্যাগুলি স্থির করে।

দেখুন: http://nginx.org/en/docs/ngx_core_module.html#user


2
আপনি দয়া করে এখানে উল্লিখিত কনফিগারেশনটি পোস্ট করতে পারেন?
paweloque

4

সুতরাং আমি উপরের সমস্তটি করেছি এবং দুর্ভাগ্যক্রমে আমার জন্য এটি আমাকে একই ত্রুটি দিচ্ছিল। আমি এনগিনেক্সের সাথে সেন্টোস 6.7 মেশিনে টর্কবক্স সহ একটি জার ফাইলে প্যাকেজড একটি রেল অ্যাপ চালাচ্ছি। আমি এটির জন্য প্রায় 3 ঘন্টা লড়াই করেছিলাম যতক্ষণ না আমি অন্য কোনও সমাধান খুঁজে পেয়েছি এবং আমি আশা করি এটি অন্য কাউকে সহায়তা করে। এই নিবন্ধ অনুসারে nginx প্রয়োগকারী মোডে চলতে পারে। আমি কেবলমাত্র nginx এর সাথে অনুমতিমূলক মোডে পরিবর্তন করেছি

setenforce 0

এটির সাথে, ত্রুটিটি চলে গেছে এবং আমি আমার অ্যাপ্লিকেশনটি মঞ্চ / উত্পাদন পরিবেশে চালাতে সক্ষম হয়েছি।

অডিট.লগটিতে ত্রুটিটি না পাওয়া পর্যন্ত আমি নির্বিকার ছিলাম

type=AVC msg=audit(1444454198.438:466): avc:  denied  { name_connect } for  pid=3201 comm="nginx" dest=8080 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:http_cache_port_t:s0 tclass=tcp_socket

আমি সত্যিই আশা করি যে এটি আমার সবেমাত্র হারিয়ে যাওয়া 3 ঘন্টা কে বাঁচায়।


1
আপনি ভুল নন, কেন জানি কেউ ভোট দেয় -১ (তাকে লজ্জা দেয়)। সমস্যাটি রেডহ্যাট / সেন্টোস ভিত্তিক হোস্ট এবং সেলিনাক্সে। একটি উপায় হ'ল সেটেনফোর্স 0 (অভদ্র), অন্য উপায়টি সেটসবুল এবং নেটওয়ার্কিং বিকল্পগুলির সাথে।
periket2000

এটি CentOS 7.2 এর সাথে সহায়তা করেছে।
এম কে্যাটলিস্ট 3

setsebool -P httpd_can_network_connect 1 স্ট্যাকওভারফ্লো.com
a/

3

একটি অনিবদ্ধ অ্যাকাউন্ট থেকে nginx শুরু করার সময় use_temp_path=off

proxy_cache_path ... use_temp_path=off;

এটি ডিফল্টে ফাইলগুলি রাখার চেষ্টা করে এনজিনেক্স এড়ানোর প্রয়োজন proxy_temp_path। এনগিনেক্স ডক্স থেকে:

অস্থায়ী ফাইলগুলির ডিরেক্টরিটি ব্যবহার_টেম্প_প্যাথ প্যারামিটারের (1.7.10) ভিত্তিতে সেট করা থাকে। যদি এই প্যারামিটারটি বাদ দেওয়া হয় বা মানটিতে সেট করা থাকে তবে প্রদত্ত অবস্থানের জন্য প্রক্সি_ট্যাম্প_পথ নির্দেশিকা দ্বারা সেট করা ডিরেক্টরি ব্যবহার করা হবে। মানটি সেট করা থাকলে অস্থায়ী ফাইলগুলি সরাসরি ক্যাশে ডিরেক্টরিতে রেখে দেওয়া হবে।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.