Php-fpm और Nginx Docker कंटेनरों को सही ढंग से कैसे लिंक करें?


103

मैं 2 अलग कंटेनरों को जोड़ने की कोशिश कर रहा हूं:

समस्या यह है कि php स्क्रिप्ट काम नहीं करती है। शायद php-fpm कॉन्फ़िगरेशन गलत है। यहाँ स्रोत कोड है, जो मेरे भंडार में है । यहाँ फ़ाइल है docker-compose.yml:

nginx:
    build: .
    ports:
        - "80:80"
        - "443:443"
    volumes:
        - ./:/var/www/test/
    links:
        - fpm
fpm:
    image: php:fpm
    ports:
        - "9000:9000"

और Dockerfileजो मैंने nginx एक के आधार पर एक कस्टम छवि बनाने के लिए इस्तेमाल किया:

FROM nginx

# Change Nginx config here...
RUN rm /etc/nginx/conf.d/default.conf
ADD ./default.conf /etc/nginx/conf.d/

अन्त में, यहाँ मेरा कस्टम Nginx वर्चुअल होस्ट कॉन्फिग है:

server {
    listen  80;

    server_name localhost;
    root /var/www/test;

    error_log /var/log/nginx/localhost.error.log;
    access_log /var/log/nginx/localhost.access.log;

    location / {
        # try to serve file directly, fallback to app.php
        try_files $uri /index.php$is_args$args;
    }

    location ~ ^/.+\.php(/|$) {
        fastcgi_pass 192.168.59.103:9000;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param HTTPS off;
    }
}

क्या कोई मुझे इन कंटेनरों को सही तरीके से कॉन्फ़िगर करने में मदद कर सकता है?

PS मैं इस तरह के डॉक-कंपोजर के माध्यम से कंटेनर चलाता हूं:

docker-compose up

प्रोजेक्ट रूट डायरेक्टरी से।


1
आपने उन्हें अब तक या किस कोड का उपयोग करने के लिए कॉन्फ़िगर करने का प्रयास किया है। कृपया मुझे अनुमान न लगाएं कि मैं अनुमान लगाने में बकवास हूं।
मैथ्यू ब्राउन उर्फ ​​लॉर्ड मैट

1
@MatthewBrown Huh, मैंने अपना कोड GitHub पर सार्वजनिक रिपॉजिटरी में डाल दिया और लगता है कि यह पर्याप्त होगा, लेकिन आप सही हैं, मेरे प्रश्न में भी यहां कोड दिखाने के लिए बेहतर है।
विक्टर बोचरस्की

जब छवियां docker execघूमती हैं , तो क्या आप चल रहे कंटेनर और पिंग fpm में जा सकते हैं ?
विंसेंट डी स्मेट

1
@MatthewBrown हाँ, मैंने इसे जीत लिया, धन्यवाद
विक्टर बोचरस्की

1
पुनश्च मैं भी लिंक करने के लिए एक काम समाधान हासिल की Nginxऔर PHP-FPM एक साथ Vagrant और Ansible साथ। अगर आप चाहें तो मेरे रेपो github.com/bocharsky-bw/vagrant-ansible-docker की जाँच करें ।
विक्टर बोकार्स्की

जवाबों:


32

नग्नेक्स कॉन्फिगर में कंटेनरों के हार्डकोड आईपी को न करें, डॉकटर लिंक मशीन के होस्टनाम को कंटेनर की होस्ट फ़ाइल में जोड़ता है और आपको होस्टनाम द्वारा पिंग करने में सक्षम होना चाहिए।

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

हर बार जब एक डॉकटर कंटेनर एक छवि से ऊपर उठता है (यहां तक ​​कि एक मौजूदा कंटेनर को स्टार्ट / स्टार्ट-इन करता है) कंटेनर को डॉक होस्ट द्वारा नए आईपी को सौंपा जाता है। ये आईपी आपकी वास्तविक मशीनों के समान सबनेट में नहीं हैं।

डॉक्स लिंकिंग डॉक्स देखें (यह वह है जो पृष्ठभूमि में उपयोग करता है)

लेकिन docker-composeलिंक और एक्सपोज़ पर डॉक्स में अधिक स्पष्ट रूप से समझाया गया है

लिंक

links:
 - db
 - db:database
 - redis

उपनाम के नाम के साथ एक प्रविष्टि इस सेवा के लिए कंटेनरों के अंदर / आदि / मेजबानों में बनाई जाएगी, जैसे:

172.17.2.186  db
172.17.2.186  database
172.17.2.187  redis

बेनकाब

मेजबान मशीन पर प्रकाशित किए बिना बंदरगाहों को बेनकाब करें - वे केवल लिंक की गई सेवाओं तक ही पहुंच पाएंगे । केवल आंतरिक पोर्ट निर्दिष्ट किया जा सकता है।

और अगर आपने पर्यावरण चर के माध्यम से पोर्ट + अन्य क्रेडेंशियल्स प्राप्त करने के लिए अपनी परियोजना स्थापित की है, तो लिंक स्वचालित रूप से सिस्टम चर का एक गुच्छा सेट करते हैं :

यह देखने के लिए कि सेवा के लिए कौन से पर्यावरण चर उपलब्ध हैं, चलाएं docker-compose run SERVICE env

name_PORT

पूर्ण URL, जैसे DB_PORT = tcp: //172.17.0.5: 5432

name_PORT_num_protocol

पूर्ण URL, उदा DB_PORT_5432_TCP=tcp://172.17.0.5:5432

name_PORT_num_protocol_ADDR

कंटेनर का आईपी पता, उदा DB_PORT_5432_TCP_ADDR=172.17.0.5

name_PORT_num_protocol_PORT

उजागर बंदरगाह संख्या, उदाहरण के लिए DB_PORT_5432_TCP_PORT=5432

name_PORT_num_protocol_PROTO

प्रोटोकॉल (tcp या udp), उदा DB_PORT_5432_TCP_PROTO=tcp

name_NAME

पूरी तरह से योग्य कंटेनर नाम, उदा DB_1_NAME=/myapp_web_1/myapp_db_1


2
आपको होस्ट पर पोर्ट 9000 प्रकाशित करने की भी आवश्यकता नहीं है, लिंक किए गए डॉकटर कंटेनरों के बीच पोर्ट खुले रहते हैं, जब तक कि आप अपने होस्ट से सीधे पोर्ट का निवारण नहीं करना चाहते।
विंसेंट डी स्मेट

हाँ, आप सही हैं, धन्यवाद। मेरे मामले में मुझे fastcgi_pass fpm: 9000 का उपयोग प्रत्यक्ष आईपी के बजाय करना चाहिए । मुझे नहीं पता कि डॉकर इसे स्वचालित रूप से होस्ट करने के लिए जोड़ते हैं, मेरा बुरा।
विक्टर बोकार्स्की

क्या बंदरगाह के बारे में है, तो बेहतर उपयोग करने के लिए बेनकाब करने के बजाय बंदरगाहों ? या मैं इस पोर्ट का कोई उपयोग नहीं कर सका और निर्देशों को उजागर कर सकता हूं क्योंकि लिंक किए गए कंटेनरों में इस पोर्ट तक पहुंच होगी?
विक्टर बोचरस्की

देर से जवाब के लिए खेद है - मुझे लगता है कि आपको एक्सपोज़ का उपयोग करने की आवश्यकता हो सकती है, क्षमा करें मैं अभी जांच नहीं कर सकता
विंसेंट डी स्मेट

2
--linksअब डॉक्यूमेंट के अनुसार अप्रचलित हैं, जिसे आप संदर्भित करते हैं। वे अभी भी कर रहे हैं वर्तमान में समर्थित लेकिन उनमें obsoleted किए जाने के लिए स्पष्ट योजना है।
थेरोबोक्नो

86

मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन मुझे एक ही समस्या है और मैं समझ नहीं पाया कि आपके कोड ने काम क्यों नहीं किया। बहुत सारे परीक्षणों के बाद मुझे पता चला है कि क्यों।

ऐसा लगता है कि fpm nginx से पूर्ण पथ प्राप्त करता है और fpm कंटेनर में फ़ाइलों को खोजने का प्रयास करता है, इसलिए यह बिल्कुल server.rootnginx config के समान होना चाहिए , भले ही यह nginx कंटेनर में मौजूद न हो।

प्रदर्शित करना:

डोकर-compose.yml

nginx:
    build: .
    ports:
        - "80:80"
    links:
        - fpm
fpm:
    image: php:fpm
    ports:
        - ":9000"

    # seems like fpm receives the full path from nginx
    # and tries to find the files in this dock, so it must
    # be the same as nginx.root
    volumes:
        - ./:/complex/path/to/files/

/etc/nginx/conf.d/default.conf

server {
    listen  80;

    # this path MUST be exactly as docker-compose.fpm.volumes,
    # even if it doesn't exist in this dock.
    root /complex/path/to/files;

    location / {
        try_files $uri /index.php$is_args$args;
    }

    location ~ ^/.+\.php(/|$) {
        fastcgi_pass fpm:9000;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

Dockerfile

FROM nginx:latest
COPY ./default.conf /etc/nginx/conf.d/

4
बहुत बढ़िया!!! यह बिल्कुल सही बात है! मैंने nginx रूट को /var/www/htmlविफलता के अलावा अन्य वैकल्पिक पथ पर सेट किया है ।
अल्फ्रेड हुआंग

3
इसके अलावा, बस एक नोट जो कि :9000पोर्ट में इस्तेमाल किया जा रहा है वह है जो आपके होस्ट के संपर्क में नहीं है। यह पता लगाने के लिए मुझे 2 घंटे लगे। उम्मीद है, आपके पास नहीं है।
shriek

1
services.fpm.ports is invalid: Invalid port ":9000", should be [[remote_ip:]remote_port[-remote_port]:]port[/protocol]
0:30

4
आपको वास्तव में यहाँ एक portsअनुभाग शामिल करने की आवश्यकता नहीं है। यदि आपको exposeपहले से ही यह छवि में नहीं है (जो शायद यह है) तो आपको इसकी आवश्यकता हो सकती है। यदि आप अंतर-कंटेनर संचार कर रहे हैं, तो आपको PHP-FPM पोर्ट को उजागर नहीं करना चाहिए
सीर

के लिए एक समाधान के लिए देख रहा था AH01071: Got error 'Primary script unknown\n'और कि php-fpm कंटेनर को वेब नोड के साथ एक ही निर्देशिका को साझा करना था वह समाधान था!
cptPH

23

जैसा कि पहले बताया गया था, समस्या यह थी कि फाइलें fpm कंटेनर द्वारा दिखाई नहीं दे रही थीं। हालांकि कंटेनरों के बीच डेटा साझा करने के लिए अनुशंसित पैटर्न केवल-डेटा कंटेनरों का उपयोग कर रहा है (जैसा कि इस लेख में बताया गया है )।

लंबी कहानी छोटी: एक कंटेनर बनाएं जो आपके डेटा को रखता है, इसे वॉल्यूम के साथ साझा करें, और इस वॉल्यूम को अपने ऐप्स में लिंक करें volumes_from

कम्पोज़ (मेरी मशीन में 1.6.2) का उपयोग करते हुए, docker-compose.ymlफ़ाइल पढ़ेगी:

version: "2"
services:
  nginx:
    build:
      context: .
      dockerfile: nginx/Dockerfile
    ports:
      - "80:80"
    links:
      - fpm
    volumes_from:
      - data
  fpm:
    image: php:fpm
    volumes_from:
      - data
  data:
    build:
      context: .
      dockerfile: data/Dockerfile
    volumes:
      - /var/www/html

ध्यान दें कि dataएक वॉल्यूम प्रकाशित करता है जो nginxऔर fpmसेवाओं से जुड़ा हुआ है । तब Dockerfileके लिए डेटा सेवा, कि अपने स्रोत कोड शामिल हैं:

FROM busybox

# content
ADD path/to/source /var/www/html

और Dockerfilenginx के लिए, कि बस डिफ़ॉल्ट config की जगह:

FROM nginx

# config
ADD config/default.conf /etc/nginx/conf.d

पूर्णता के लिए, उदाहरण के लिए काम करने के लिए आवश्यक कॉन्फिगर फाइल यहां दी गई है:

server {
    listen 0.0.0.0:80;

    root /var/www/html;

    location / {
        index index.php index.html;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass fpm:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    }
}

जो दस्तावेज़ के रूप में साझा मात्रा का उपयोग करने के लिए nginx को बताता है, और fpm कंटेनर के साथ संवाद करने में सक्षम होने के लिए nginx के लिए सही कॉन्फ़िगरेशन सेट करता है (यानी: दाईं ओर HOST:PORT, जो कंपोज़ fpm:9000द्वारा परिभाषित होस्टनामों के लिए धन्यवाद है, और SCRIPT_FILENAME)।


ऐसा लगता है कि डेटा को होस्ट से कंटेनरों में अपडेट नहीं मिलता है, और जब मैं docker ps -a करता हूं तो मुझे डेटा कंटेनर बंद हो जाता है, क्या यह एक मुद्दा है?
आफताब नावेद

2
यही अपेक्षित व्यवहार है। एक डेटा-ओनली कंटेनर कोई कमांड नहीं चलाता है, और इसे बस रोक दिया जाएगा। इसके अलावा, Dockerfileडेटा कंटेनर बिल्ड समय पर आपके स्रोतों को कंटेनर में कॉपी कर रहा है। यही कारण है कि यदि आप होस्ट में फ़ाइलों को बदलते हैं तो उन्हें अपडेट नहीं किया जाएगा। यदि आप होस्ट और कंटेनर के बीच स्रोतों को साझा करना चाहते हैं, तो आपको निर्देशिका को माउंट करने की आवश्यकता है। dataलोड करने के लिए कंपोज़ फ़ाइल में सेवा बदलें image: busybox, और volumesअनुभाग में दर्ज करें ./sources:/var/www/html, जहां ./sourcesहोस्ट में आपके स्रोतों का पथ है।
किन्नर

16

नया उत्तर

डॉकर कंपोज को अपडेट किया गया है। उनके पास अब एक संस्करण 2 फ़ाइल प्रारूप है

संस्करण 2 फ़ाइलों को कंपोज़ 1.6.0+ द्वारा समर्थित किया गया है और संस्करण 1.10.0+ के डॉक इंजन की आवश्यकता है।

वे अब Docker की नेटवर्किंग सुविधा का समर्थन करते हैं, जो जब myapp_default नामक एक डिफ़ॉल्ट नेटवर्क सेट करता है

से अपनी दस्तावेज़ीकरण अपनी फ़ाइल नीचे कुछ ऐसा दिखाई देगा:

version: '2'

services:
  web:
    build: .
    ports:
      - "8000:8000"
  fpm:
    image: phpfpm
  nginx
    image: nginx

चूंकि इन कंटेनरों को स्वचालित रूप से डिफ़ॉल्ट myapp_default नेटवर्क में जोड़ा जाता है, वे एक-दूसरे से बात करने में सक्षम होंगे। आपको तब Nginx config में होगा:

fastcgi_pass fpm:9000;

जैसा कि टिप्पणियों में @treeface द्वारा उल्लेख किया गया है, यह सुनिश्चित करने के लिए याद रखें कि PHP-FPM पोर्ट 9000 पर सुन रहा है, यह संपादन द्वारा किया जा सकता है /etc/php5/fpm/pool.d/www.confजहाँ आपको आवश्यकता होगी listen = 9000

पुराना उत्तर

मैंने नीचे उन लोगों के लिए रखा है जो डॉकर / डोकर के पुराने संस्करण का उपयोग करते हैं और जानकारी चाहते हैं।

मैं इस प्रश्न पर उत्तर देने के लिए गूगल पर लड़खड़ाता रहा जब इस प्रश्न का उत्तर खोजने की कोशिश की जा रही थी लेकिन यह बिल्कुल नहीं था कि मैं क्यूकर / ए के कारण डॉकटर-कम्पोज़ (जो लेखन के समय केवल प्रायोगिक समर्थन के लिए जोर देता है) के कारण देख रहा था डॉकटर नेटवर्किंग सुविधाएँ)। इसलिए यहां मैंने जो कुछ सीखा है, उस पर मेरा ध्यान है।

डॉकर ने हाल ही में अपने नेटवर्क फीचर के पक्ष में अपने लिंक फीचर को हटा दिया है

इसलिए Docker Networks फीचर का उपयोग करके आप इन चरणों का पालन करके कंटेनरों को लिंक कर सकते हैं। पहले से जुड़े डॉक्स पर पढ़े गए विकल्पों पर पूर्ण स्पष्टीकरण के लिए।

सबसे पहले अपना नेटवर्क बनाएं

docker network create --driver bridge mynetwork

अगला अपने PHP-FPM कंटेनर को चलाने के लिए सुनिश्चित करें कि आप पोर्ट 9000 खोलें और अपने नए नेटवर्क ( mynetwork) को असाइन करें ।

docker run -d -p 9000 --net mynetwork --name php-fpm php:fpm

यहां महत्वपूर्ण बिट --name php-fpmकमांड के अंत में है जो नाम है, हमें बाद में इसकी आवश्यकता होगी।

अगला अपने Nginx कंटेनर को फिर से उस नेटवर्क पर असाइन करें जिसे आपने बनाया है।

docker run --net mynetwork --name nginx -d -p 80:80 nginx:latest

PHP और Nginx कंटेनरों के लिए आप --volumes-fromआवश्यकतानुसार कमांड आदि में भी जोड़ सकते हैं ।

अब आता है Nginx कॉन्फ़िगरेशन। जो कुछ इस तरह दिखना चाहिए:

server {
    listen 80;
    server_name localhost;

    root /path/to/my/webroot;

    index index.html index.htm index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php-fpm:9000; 
        fastcgi_index index.php;
        include fastcgi_params;
    }
}

fastcgi_pass php-fpm:9000;स्थान ब्लॉक में सूचना । php-fpmपोर्ट पर कॉन्टैक्ट कंटेनर कहते हुए 9000। जब आप डॉकरी ब्रिज नेटवर्क में कंटेनरों को जोड़ते हैं, तो वे सभी एक स्वचालित रूप से एक होस्ट फ़ाइल अपडेट प्राप्त करते हैं जो उनके आईपी पते के खिलाफ उनके कंटेनर के नाम में डालता है। इसलिए जब Nginx देखता है कि यह PHP-FPM कंटेनर से संपर्क करने का पता करेगा जिसे आपने php-fpmपहले नाम दिया था और अपने mynetworkडॉकर नेटवर्क को सौंपा था ।

आप अपने डॉकटर कंटेनर के निर्माण की प्रक्रिया के दौरान या उसके बाद आप उस Nginx कॉन्फ़िगरेशन को जोड़ सकते हैं।


यह भी सुनिश्चित करें बनाने के लिए याद php-fpmपोर्ट 9000 पर सुन रहा है यह होगा listen = 9000में /etc/php5/fpm/pool.d/www.conf
ट्रीफेस

धन्यवाद @treeface अच्छा बिंदु। मैंने आपकी टिप्पणी से अपडेट किया है।
डेविड टीटी

8

जैसा कि पिछले उत्तरों ने हल किया है, लेकिन बहुत स्पष्ट रूप से कहा जाना चाहिए: php कोड को php-fpm कंटेनर में रहने की आवश्यकता होती है, जबकि स्थिर फ़ाइलों को nginx कंटेनर में रहने की आवश्यकता होती है। सादगी के लिए, अधिकांश लोगों ने सभी कोडों को दोनों से जोड़ दिया है, जैसा कि मैंने नीचे भी किया है। यदि भविष्य में, मैं अपनी परियोजनाओं में कोड के इन अलग-अलग हिस्सों को अलग करने की संभावना कम कर दूंगा, तो यह सुनिश्चित करने के लिए कि किन कंटेनरों की पहुंच किन भागों तक है।

इस नवीनतम रहस्योद्घाटन के साथ नीचे मेरी उदाहरण फ़ाइलें अपडेट करें (साभार @alkaline)

यह डॉकटर 2.0 के लिए न्यूनतम सेटअप प्रतीत होता है (क्योंकि डॉकटर 2.0 में चीजें बहुत आसान हो गई हैं)

डोकर-compose.yml:

version: '2'
services:
  php:
    container_name: test-php
    image: php:fpm
    volumes:
      - ./code:/var/www/html/site
  nginx:
    container_name: test-nginx
    image: nginx:latest
    volumes:
      - ./code:/var/www/html/site
      - ./site.conf:/etc/nginx/conf.d/site.conf:ro
    ports:
      - 80:80

( ऊपर दिए गए docker-compose.yml को अपडेट करें : जिन साइटों पर css, javascript, static files इत्यादि हैं, उनके लिए आपको उन फ़ाइलों की आवश्यकता होगी जो nginx कंटेनर तक पहुंचें। जबकि अभी भी सभी php कोड fpm कंटेनर के लिए सुलभ हैं, क्योंकि। मेरा आधार कोड css, js और php का एक गन्दा मिश्रण है, यह उदाहरण सिर्फ दोनों कंटेनरों को सभी कोड देता है)

एक ही फ़ोल्डर में:

site.conf:

server
{
    listen   80;
    server_name site.local.[YOUR URL].com;

    root /var/www/html/site;
    index index.php;

    location /
    {
        try_files $uri =404;
    }

    location ~ \.php$ {
        fastcgi_pass   test-php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

फ़ोल्डर कोड में:

./code/index.php:

<?php
phpinfo();

और अपनी होस्ट फ़ाइल को अपडेट करना न भूलें:

127.0.0.1 site.local.[YOUR URL].com

और अपना डॉकटर-कंपोज़ करें

$docker-compose up -d

और अपने पसंदीदा ब्राउज़र से URL आज़माएं

site.local.[YOUR URL].com/index.php

1
आपका nginx config फाइल मानता है कि आपकी वेबसाइट में केवल php फाइलें हैं। स्टैटिक फाइल्स (jpg, txt, svg, ...) के लिए nginx लोकेशन रूल बनाना सबसे अच्छा अभ्यास है और php दुभाषिया से बचें। उस स्थिति में दोनों nginx और php कंटेनरों को वेबसाइट फ़ाइलों तक पहुँच की आवश्यकता होती है। @iKanor का उत्तर ऊपर ध्यान रखता है।
बर्नार्ड

धन्यवाद @Alkaline, स्थिर फाइलें मेरे मूल उत्तर के साथ समस्या हैं। वास्तव में, nginx वास्तव में जरूरत है, कम से कम, सीएसएस और जेएस फाइलें ठीक से काम करने के लिए उस मशीन के लिए स्थानीय होने के लिए।
फिलिप

7

मुझे लगता है कि हमें fpm कंटेनर की मात्रा देने की आवश्यकता है, न ही हम? तो =>

fpm:
    image: php:fpm
    volumes:
        - ./:/var/www/test/

यदि मैं ऐसा नहीं करता हूं, तो मैं एक अनुरोध फायर करते समय इस अपवाद में भागता हूं, क्योंकि fpm अनुरोधित फ़ाइल नहीं पा सकता है:

[त्रुटि] ६ # ६: * ४ फास्टट्रेजी में भेजे गए स्टेटर में: "प्राथमिक लिपि अज्ञात", जबकि अपस्ट्रीम, क्लाइंट: १.1२.१.4.४२.१, सर्वर: लोकलहोस्ट, से प्रतिक्रिया हेडर पढ़ते हुए, अनुरोध: "गेट / एचटीटीपी / १.१", अपस्ट्रीम: "फास्टसीगी : //172.17.0.81: 9000 ", मेजबान:" लोकलहोस्ट "


1
हाँ आप सही है! हमें fpm और nginx
विक्टर Bocharsky


1

किसी और के लिए हो रही है

Nginx 403 त्रुटि: [फ़ोल्डर] का निर्देशिका सूचकांक निषिद्ध है

उपयोग index.phpकरते समय index.htmlपूरी तरह से काम करता है और index.phpअपनी साइट के सर्वर ब्लॉक में इंडेक्स में शामिल होता हैsites-enabled

server {
    listen 80;

    # this path MUST be exactly as docker-compose php volumes
    root /usr/share/nginx/html;

    index index.php

    ...
}

सुनिश्चित करें कि आपकी nginx.conf फ़ाइल /etc/nginx/nginx.confवास्तव में आपकी साइट को httpब्लॉक में लोड करती है ...

http {

    ...

    include /etc/nginx/conf.d/*.conf;

    # Load our websites config 
    include /etc/nginx/sites-enabled/*;
}

इसके लिए धन्यवाद, पुराना, लेकिन अभी भी जानकारीपूर्ण, मुझे उपयोग करना था / usr / share / nginx / html but, धन्यवाद
शमौन Davies
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.