nginx: पोर्ट 8090 को बांधने की कोई अनुमति नहीं है लेकिन यह 80 और 8080 को बांधता है


37

मैं कुछ अजीब अनुमति से संबंधित व्यवहार के साथ संघर्ष कर रहा हूं: जब मैं पोर्ट 8080 को सुनने के लिए nginx को कॉन्फ़िगर करता हूं तो सब कुछ उम्मीद के मुताबिक काम करता है, लेकिन जब मैं किसी अन्य पोर्ट का उपयोग करता हूं तो मुझे ऐसा कुछ मिलता है

2014/01/10 09:20:02 [emerg] 30181#0: bind() to 0.0.0.0:8090 failed (13: Permission denied)

में /var/log/nginx/error.log

मेरे पास कोई सुराग नहीं है कि मैं कहां से देखूं तो मुझे वास्तव में नहीं पता कि कॉन्फ़िगरेशन के कौन से हिस्से दिलचस्प हो सकते हैं।

nginx.conf में nginx को nginx के रूप में चलाने के लिए कॉन्फ़िगर किया गया है:

user  nginx;

इसके अलावा उपयोगकर्ता nginx एक और समूह 'git' में है

साइट-विन्यास में मैंने इस तरह सुनने की कोशिश की:

server {
    listen 8090; #does not work
    #listen 8080; #works
    #listen 9090; #does not work
    #listen 9090 default; #does not work neighter
    #listen 80; #works!
    server_name <some IP>;
    ...
}

मेरे पास केवल एक और श्रोता है जो पोर्ट 443 परोसता है।

जब मैं कुछ अन्य सेवा जैसे SimpleHTTPServerपोर्ट 8090 इत्यादि शुरू करता हूं, तो गैर-रूट के रूप में सब कुछ ठीक काम करता है:

$ python -m SimpleHTTPServer 8090
Serving HTTP on 0.0.0.0 port 8090 ...
localhost.localdomain - - [10/Jan/2014 09:34:19] "GET / HTTP/1.1" 200 -

सामान्य रूप से अस्वीकृत अनुमतियों के क्या कारण हो सकते हैं?

सिस्टम फेडोरा 18 नॉगिक्स स्टॉक फेडोरा 1.2.9 है


सबसे पहले, आपको फेडोरा के समर्थित संस्करण में अपडेट करना होगा। दूसरा, फिर से प्रयास करें। यदि यह अभी भी विफल रहता है, तो जांचें /var/log/audit/audit.log
माइकल हैम्पटन

2
यह बहुत मददगार नहीं है। फेडोरा 18 है अभी भी समर्थन किया और यहां तक कि अगर यह नहीं था linux अनुमति प्रणाली तब से पूरी तरह से नहीं बदला है।
Frans

हाँ ... एक और चार दिनों के लिए।
माइकल हैम्पटन

जवाबों:


52

यह ज्यादातर SELinux से संबंधित होगा

semanage port -l | grep http_port_t
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000

जैसा कि आप ऊपर दिए गए आउटपुट से SELinux को लागू करने के मोड में देख सकते हैं http केवल सूचीबद्ध बंदरगाहों से बंधने की अनुमति है। समाधान उन बंदरगाहों को जोड़ना है जिन्हें आप सूची में बांधना चाहते हैं

semanage port -a -t http_port_t  -p tcp 8090

सूची में पोर्ट 8090 जोड़ देगा।


1
यह बात है, धन्यवाद! लेकिन इतनी कम जानकारी क्यों है? मुझे लगता है कि अन्य लोग SELinux के साथ फेडोरा का उपयोग करेंगे, भी ..
frans

1
@frans: बहुत सारी जानकारी है, आप बस इसके बारे में नहीं जानते हैं या इसका उपयोग और उपयोग कैसे करें। यदि आपके पास लागू या अनुमति मोड में SELiux है तो सभी अस्वीकरणों को /var/log/audit.log पर लॉग इन किया जाता है। ऐसे उपकरण उपलब्ध हैं जो आपको सूचना और SELinux नीति को फ़िल्टर करने, समझने और प्रबंधित करने की अनुमति देते हैं - फ़ेडोरा seliux पृष्ठों और ausearch, ऑडिट 2why, ऑडिट 2 नाल के लिए मैनपेज़ पर एक नज़र है ।
user9517

यदि आपको मिलता है semanage: command not found, तो आप इसे स्थापित कर सकते हैं yum install policycoreutils-python
mwfearnley

8080 http_port_t के लिए सूचीबद्ध नहीं है, लेकिन फिर भी यह काम करता है, किसी भी विचार क्यों?
MaxiWheat
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.