Score:0

ใช้บล็อกเซิร์ฟเวอร์หลายตัวใน NGINX บนโฮสต์เดียวกันและพอร์ตเดียวกัน

ธง be

ฉันต้องการกำหนดค่าเซิร์ฟเวอร์เพื่อให้รูทของเซิร์ฟเวอร์ให้บริการไฟล์แบบสแตติกบางไฟล์ ซึ่ง endpoing เฉพาะ /nextcloud ให้บริการ nextcloud บนโดเมนเดียวกัน

นี่คือ nginx.conf ของฉัน -

worker_processes 8;

เหตุการณ์ {
    worker_connections 1024;
}

http {
    รวม mime.types;
    แอปพลิเคชัน default_type/octet-stream;
    ส่งไฟล์บน;
    keepalive_timeout 65;

    เซิร์ฟเวอร์ {
        ฟัง 80 http2;
        ฟัง [::]:80 http2;
        server_name localhost;
        รูท /srv/http/;
        ที่ตั้ง / {
            ดัชนี index.html index.php;
            try_files $uri $uri/ =404;
            เปิดดัชนีอัตโนมัติ;
        }
        error_page 500 502 503 504 /50x.html;
        ตำแหน่ง = /50x.html {
            รูท /usr/share/nginx/html;
        }
    }
    รวม /etc/nginx/sites-enabled/*;
}

นี่คือ /etc/nginx/sites-enabled/nextcloud.conf ของฉัน

ตัวจัดการ php ต้นน้ำ {
    เซิร์ฟเวอร์ยูนิกซ์:/run/nextcloud/nextcloud.sock;
}

เซิร์ฟเวอร์ {
    ฟัง 80;
    ฟัง [::]:80;
    server_name nextcloud;

    รูท /usr/share/webapps/;

    ตำแหน่ง = /robots.txt {
        อนุญาตทั้งหมด
        ปิด log_not_found;
        access_log off;
    }

    ที่ตั้ง ^~ /.well-known {
        สถานที่ = /.well-known/carddav { ส่งคืน 301 /nextcloud/remote.php/dav/; }
        สถานที่ = /.well-known/caldav { ส่งคืน 301 /nextcloud/remote.php/dav/; }

        สถานที่ /.well-known/acme-challenge { try_files $uri $uri/ =404; }
        ตำแหน่ง /.well-known/pki-validation { try_files $uri $uri/ =404; }

        ส่งคืน 301 /nextcloud/index.php$request_uri;
    }

    ที่ตั้ง ^~ /nextcloud {
        client_max_body_size 512M;
        client_body_timeout 300 วินาที;
        fastcgi_buffers 64 4K;

        เปิด gzip;
        gzip_vary บน;
        gzip_comp_level 4;
        gzip_min_length 256;
        gzip_proxied หมดอายุ ไม่มีแคช ไม่มีที่เก็บส่วนตัว no_last_modified no_etag รับรองความถูกต้อง;
        gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/wasm application/x-font- แอปพลิเคชัน ttf/x-web-app-manifest+json แอปพลิเคชัน/xhtml+xml แอปพลิเคชัน/แบบอักษร xml/ภาพ opentype/ภาพ bmp/svg+ภาพ xml/ข้อความไอคอน x/ข้อความแคชรายการ/ข้อความ css/ข้อความล้วน/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

        add_header Referrer-Policy "no-referrer" เสมอ;
        add_header X-Content-Type-Options "nosniff" เสมอ;
        add_header X-ดาวน์โหลด-ตัวเลือก "noopen" เสมอ;
        add_header X-Frame-Options "SAMEORIGIN" เสมอ
        add_header X-อนุญาตข้ามโดเมน-นโยบาย "ไม่มี" เสมอ;
        add_header X-Robots-Tag "ไม่มี" เสมอ;
        add_header X-XSS-Protection "1; mode=block" เสมอ;

        fastcgi_hide_header X-ขับเคลื่อนโดย;

        ดัชนี index.php index.html /nextcloud/index.php$request_uri;

        ตำแหน่ง = / ถัดไป cloud {
            ถ้า ( $http_user_agent ~ ^DavClnt ) {
                ส่งคืน 302 /nextcloud/remote.php/webdav/$is_args$args;
            }
        }

        ตำแหน่ง ~ ^/nextcloud/(?:build|tests|config|lib|3rdparty| templates|data)(?:$|/) { ส่งคืน 404; }
        ตำแหน่ง ~ ^/nextcloud/(?:\.|autotest|occ|issue|indie|db_|console) { ส่งคืน 404; }

        ตำแหน่ง ~ \.php(?:$|/) {
            เขียนใหม่ ^/nextcloud/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+ |.+\/richdocumentscode\/proxy) /nextcloud/index.php$request_uri;

            fastcgi_split_path_info ^(.+?\.php)(/.*)$;
            ตั้ง $path_info $fastcgi_path_info;

            try_files $fastcgi_script_name =404;

            รวม fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $path_info;

            fastcgi_param modHeadersAvailable จริง; # หลีกเลี่ยงการส่งส่วนหัวความปลอดภัยสองครั้ง
            fastcgi_param front_controller_active จริง; # เปิดใช้งาน URL ที่สวยงาม
            fastcgi_pass php-ตัวจัดการ;

            เปิด fastcgi_intercept_errors;
            ปิด fastcgi_request_buffering;

            fastcgi_max_temp_file_size 0;
        }

        ตำแหน่ง ~ \.(?:css|js|svg|gif|png|jpg|ico|wasm|tflite)$ {
            try_files $uri /nextcloud/index.php$request_uri;
            หมดอายุ 6M; # นโยบายการควบคุมแคชที่ยืมมาจาก `.htaccess`
            access_log off; # ทางเลือก: อย่าบันทึกการเข้าถึงเนื้อหา

            ตำแหน่ง ~ \.wasm$ {
                แอปพลิเคชัน default_type/wasm;
            }
        }

        ตำแหน่ง ~ \.woff2?$ {
            try_files $uri /nextcloud/index.php$request_uri;
            หมดอายุ 7d; # นโยบายการควบคุมแคชที่ยืมมาจาก `.htaccess`
            access_log off; # ทางเลือก: อย่าบันทึกการเข้าถึงเนื้อหา
        }

        ตำแหน่ง / nextcloud / ระยะไกล {
            ส่งคืน 301 /nextcloud/remote.php$request_uri;
        }

        ตำแหน่ง / คลาวด์ถัดไป {
            try_files $uri $uri/ /nextcloud/index.php$request_uri;
        }
    }
}

ปัญหาคือการกำหนดค่านี้ใช้ไม่ได้ ด้วยการกำหนดค่านี้ ฉันได้รับ 404 เมื่อฉันพยายามเข้าถึง /nextcloud/

ถ้าฉันปิดใช้งานการบล็อกเซิร์ฟเวอร์ไฟล์สแตติกใน nginx.conf ฉันจะสามารถเข้าถึง /nextcloud/ ได้ แต่หลังจากนั้น ฉันไม่สามารถเข้าถึงไฟล์สแตติกของฉันได้ ฉันจะกำหนดค่าให้ทั้งสองทำงานบนโฮสต์เดียวกันและพอร์ตเดียวกันได้อย่างไร

Score:0
ธง us

คุณต้องกำหนดค่าทั้งสองอย่างให้เหมือนกัน เซิร์ฟเวอร์ บล็อก.

เมื่อ nginx ได้รับคำขอ ก็จะเลือกโฮสต์เสมือนเพื่อใช้ตาม HTTP เจ้าภาพ ส่วนหัวในคำขอและหมายเลขพอร์ต

การกำหนดค่าปัจจุบันของคุณจะให้บริการ เน็กซ์คลาวด์ หากท่านเข้าใช้บริการโดยใช้ http://nextcloud/เน็กซ์คลาวด์โดยมีเงื่อนไขว่าคุณได้กำหนดค่า DNS อย่างถูกต้องสำหรับ เน็กซ์คลาวด์ ชื่อ.

สิ่งที่คุณต้องการคือสิ่งนี้ในการกำหนดค่า nginx ของคุณ:

worker_processes 8;

เหตุการณ์ {
    worker_connections 1024;
}

http {
    รวม mime.types;
    แอปพลิเคชัน default_type/octet-stream;
    ส่งไฟล์บน;
    keepalive_timeout 65;

    เซิร์ฟเวอร์ {
        ฟัง 80 http2;
        ฟัง [::]:80 http2;
        server_name localhost;
        รูท /srv/http/;
        ที่ตั้ง / {
            ดัชนี index.html index.php;
            try_files $uri $uri/ =404;
            เปิดดัชนีอัตโนมัติ;
        }
        
        ตำแหน่ง / คลาวด์ถัดไป {
            ...
        }

        error_page 500 502 503 504 /50x.html;
        ตำแหน่ง = /50x.html {
            รูท /usr/share/nginx/html;
        }
    }
    รวม /etc/nginx/sites-enabled/*;
}

และลบการกำหนดค่าอื่น ๆ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา