nginx অবস্থানে উপসর্গ url আবার লিখুন


10

আমার nginx কনফিগারেশন ফাইলটি এর মতো:

server {
    listen 80;
    listen 443 ssl;
    server_name XXX.com;

    error_log  /log/nginx/xxx.com_error.log;
    access_log /log/nginx/xxx.com_access.log main;

    root /data/www/;
    index index.php index.html index.htm;

    location ~ \.php$ {
        add_header X-Frame-Options SAMEORIGIN;

        fastcgi_pass   127.0.0.1:9000;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

নিম্নলিখিতগুলি মেটানোর জন্য আমাদের nginx কনফিগার করতে হবে:

1 、 যদি url এর উপসর্গ না থাকে "/api/mobile/index.php", এবং অনুরোধের বন্দরটি 80 হয়, তবে এটি https 2 এ পুনর্নির্দেশ করুন 、 যদি url এর উপসর্গ থাকে" /api/mobile/index.php",df

সুতরাং আমি কনফিগার ফাইলে সামগ্রী যুক্ত করব:

    location ~ ^(?!/api/mobile/index\.php).*$ {
        if ($server_port = "80") {
               return 301 https://$server_name$request_uri;
        }

        rewrite /* $server_name$reqeust_uri last;
    }

এখন কনফিগার ফাইল ফাইলটি হ'ল:

server {
    listen 80;
    listen 443 ssl;
    server_name XXX.com;

    error_log  /log/nginx/xxx.com_error.log;
    access_log /log/nginx/xxx.com_access.log main;

    root /data/www/;
    index index.php index.html index.htm;

    location ~ ^(?!/api/mobile/index\.php).*$ {
        if ($server_port = "80") {
               return 301 https://$server_name$request_uri;
        }

        rewrite /* $server_name$reqeust_uri last;
    }

    location ~ \.php$ {
        add_header X-Frame-Options SAMEORIGIN;

        fastcgi_pass   127.0.0.1:9000;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

অনুরোধটি প্রথম অবস্থানের সাথে মিলে গেলে অন্য স্থানের সাথে মেলে না।

তার মানে এই অনুরোধটি পিএইচপি সিজি মাধ্যমে যেতে পারেনি couldn't

এমন কি কেউ আছেন যে কীভাবে সমস্যাটি সমাধান করবেন জানেন?

উত্তর:


4

Nginx শুধুমাত্র একটি অবস্থানের সাথে মেলে। কনফিগারেশন প্রথম স্থানে সরান।

location ~ ^(?!/api/mobile/index\.php).*$ {
    if ($server_port = "80") {
           return 301 https://$server_name$request_uri;
    }

    add_header X-Frame-Options SAMEORIGIN;

    fastcgi_pass   127.0.0.1:9000;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

location ~ \.php$ {
    add_header X-Frame-Options SAMEORIGIN;

    fastcgi_pass   127.0.0.1:9000;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

তবে কিছু স্থির এইচটিএমএল পৃষ্ঠার অনুরোধটি https এ পুনঃনির্দেশিত করার জন্য পুনঃব্যবস্থা করা হয়েছে। এটি বিব্রত
জর্দানলু

://$server_name$request_uri;
টাইপোর

আপনি কীভাবে এটি লিখতে পারেন আমাকে বলতে পারেন? @ ডিল্ক
জর্দানলু

বিটিডব্লিউ, আপনি প্যারামগুলি namedনকল না করে অবস্থান ব্যবহার করে এটি উন্নত করতে পারেন fastcgi
টিফটিডি

0

দুটি পৃথক সার্ভার প্রসঙ্গ ব্যবহার করতে বিকল্প, এবং ব্যবহার করেননি যদি বিবৃতি (কেন এখানে পড়তে: https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/ )।

কনফিগারেশন হতে পারে:

server {
    listen 80;
    server_name XXX.com;

    error_log  /log/nginx/xxx.com_error.log;
    access_log /log/nginx/xxx.com_access.log;

    root /data/www;
    index index.php index.html index.htm;

    location /api/mobile/index.php {
        rewrite ^(.*)$ https://$host$1 redirect;
    }

    location ~ \.php$ {
        add_header X-Frame-Options SAMEORIGIN;

        fastcgi_pass  127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include       fastcgi_param;
    }
}

server {
    listen 443 ssl http2;
    server_name XXX.com;

    error_log  /log/nginx/xxx.com_ssl_error.log;
    access_log /log/nginx/xxx.com_ssl_access.log;

    root /data/www;
    index index.php index.html index.htm;

    location ~ \.php$ {
        add_header X-Frame-Options SAMEORIGIN;

        fastcgi_pass  127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include       fastcgi_param;
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.