Nginx ক্লায়েন্ট_ম্যাক্স_বডি_ সাইজ প্রতি অবস্থান ব্লক (পিএইচপি ফ্রন্টকন্ট্রোলার প্যাটার্ন সহ)


8

আমি এই সমস্যার সমাধান খুঁজছি । আমি এই প্রশ্নের সেটআপ কেন কাজ করে না সে যুক্তিটি বুঝতে পেরেছি, তবে আমি এমন কোনও সমাধানে যাওয়ার চেষ্টা করি যেখানে আমি এটি কাজ করতে পারি।

ধারণাটি হ'ল কেবলমাত্র নির্দিষ্ট ইউআরএলে বড় ফাইল আপলোডের অনুমতি দেওয়া। আমি locationএটির জন্য একটি ব্লক ব্যবহার করতে পারি তবে সমস্যাটি হ'ল: আমার কাছে একটি পিএইচপি ফ্রন্টকন্ট্রোলার ধরণ রয়েছে:

location ~ \.php {
    # ...
    fastcgi_pass unix:/tmp/php5-fpm.sock;
}

আমার মোট কনফিগারটি দেখতে দেখতে:

# ...

http {
    # ...

    client_max_body_size 512K;

    server {
        server_name example.com;
        root        /var/www/example.com/public;

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

        location /admin/upload {
            client_max_body_size 256M;
        }

        location ~ \.php {
            # ...

            fastcgi_pass unix:/tmp/php5-fpm.sock;
        }
    }
}

আমি যেমন বুঝতে পেরেছি, কেবলমাত্র একটি লোকেশন ব্লক প্রয়োগ করা হবে। সুতরাং যদি আমার 512K এর ডিফল্ট অনুরোধের আকার থাকে তবে 256M কখনই প্রয়োগ করা হবে না কারণ সমস্ত অনুরোধগুলি ফ্রন্টকন্ট্রোলার প্যাটার্নের সাথে মিলে যায় ~ \.php

আমি কি এই ক্ষেত্রে ঠিকই আছি এবং যদি তাই হয় তবে এমন কী কনফিগার করা যেতে পারে যে দর্শনার্থীরা আপলোড করার সময় ব্যতীত অন্য কিছু আপলোড করতে পারে না admin/upload?

উত্তর:


2

দুটি পিএইচপি অবস্থান নির্ধারণ করবেন?

location ~ ^/admin/upload/.+\.php$
{
    client_max_body_size 256M;
    include /etc/nginx/conf.d/php-fpm.conf;
}   
location ~ \.php
{
    include /etc/nginx/conf.d/php-fpm.conf;
}

সম্ভবত সবচেয়ে সুন্দর না ... যদিও কার্যকর হতে হবে ..


1

যদি /admin/uploadপথটি ভার্চুয়াল হয় তবে নীচে এটি কাজ করা সম্ভব:

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

location /admin/upload {
    client_max_body_size 256M;

    include inc/php.conf;
    rewrite ^(.*)$ /index.php?$args break;
}

location ~ \.php$ {
    include inc/php.conf;
}

খুব সুন্দর না, কাজ করে।

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