Nginx 1 FastCGI ส่งเป็น stderr:“ ไม่รู้จักสคริปต์หลัก”


81

ครั้งแรกที่ฉันใช้ Nginx แต่ฉันคุ้นเคยกับ Apache และ Linux มากกว่า ฉันใช้โครงการที่มีอยู่และเมื่อฉันพยายามดู index.php ฉันไม่พบไฟล์ 404

นี่คือรายการ access.log:

2013/06/19 16:23:23 [error] 2216#0: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.ordercloud.lh"

และนี่คือไฟล์ที่มีในเว็บไซต์:

server {
    set $host_path "/home/willem/git/console/www";
    access_log  /www/logs/console-access.log  main;

    server_name  console.ordercloud;
    root   $host_path/htdocs;
    set $yii_bootstrap "index.php";

    charset utf-8;

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

    location ~ ^/(protected|framework|themes/\w+/views) {
        deny  all;
    }

    #avoid processing of calls to unexisting static files by yii
    location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
        try_files $uri =404;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php {
        fastcgi_split_path_info  ^(.+\.php)(.*)$;

        #let yii catch the calls to unexising PHP files
        set $fsn /$yii_bootstrap;
        if (-f $document_root$fastcgi_script_name){
            set $fsn $fastcgi_script_name;
        }

        fastcgi_pass   127.0.0.1:9000;
        include fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fsn;

        #PATH_INFO and PATH_TRANSLATED can be omitted, but RFC 3875 specifies them for CGI
        fastcgi_param  PATH_INFO        $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED  $document_root$fsn;
    }

    location ~ /\.ht {
        deny  all;
    }
}

My / home / willem / git / console เป็นของ www-data: www-data (ผู้ใช้งานเว็บของฉันใช้ php ฯลฯ ) และฉันได้ให้สิทธิ์ 777 จากความไม่พอใจ ...

ฉันเดาได้ดีที่สุดว่ามีบางอย่างผิดปกติกับการกำหนดค่า แต่ฉันไม่สามารถเข้าใจได้ ...

อัปเดต ดังนั้นฉันจึงย้ายไปที่/var/www/และใช้การกำหนดค่าพื้นฐานมากขึ้น:

server {
    #listen   80; ## listen for ipv4; this line is default and implied
    #listen   [::]:80 default ipv6only=on; ## listen for ipv6

    root /var/www/;
    index index.html index.htm;

    # Make site accessible from http://localhost/
    server_name console.ordercloud;

    location / {
        root           /var/www/console/frontend/www/;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /var/www;
            include        fastcgi_params;
    }

    location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
            try_files $uri =404;
        }

    location /doc/ {
        alias /usr/share/doc/;
        autoindex on;
        allow 127.0.0.1;
        deny all;
    }

}

นอกจากนี้ถ้าฉันเรียกว่าlocalhost/console/frontend/www/index.phpฉันได้รับ 500 PHP ซึ่งหมายความว่ามันจะให้บริการที่นั่น มันไม่ได้ให้บริการนอก console.ordercloud ...


สาเหตุที่เป็นไปได้อีกประการหนึ่ง: หากคุณใช้ php-fpm ตรวจสอบให้แน่ใจว่าผู้ใช้ตั้งค่าใน /etc/php-fpm.d/www.conf มีสิทธิ์ใช้งานสคริปต์ที่พยายามเรียกใช้ ฉันคิดว่ามันเป็นค่าเริ่มต้นที่ apache
เดฟ

สาเหตุอื่นที่อาจเป็นไปได้คือการเปิดใช้งาน SElinux ของคุณชำระเงิน SElinux กำหนดค่าและปิดใช้งาน
CK.Nguyen

ฉันเพิ่งเปลี่ยนการกำหนดค่าโฮสต์จาก FCGId (เรียกใช้ในฐานะเจ้าของเซิร์ฟเวอร์เสมือน) เป็น FPM (เรียกใช้ในฐานะเจ้าของเซิร์ฟเวอร์เสมือน) นอกจากการติดตั้ง PhP 7.2-fpm, cli และอื่น ๆ ...
PauloBoaventura

คำตอบ:


92

ข้อความแสดงข้อผิดพลาด“ ไม่ทราบสคริปต์หลัก” มักเกี่ยวข้องกับชุดที่ไม่ถูกต้องSCRIPT_FILENAMEในfastcgi_paramคำสั่งnginx (หรือสิทธิ์ที่ไม่ถูกต้องดูคำตอบอื่น ๆ )

คุณกำลังใช้การifกำหนดค่าที่คุณโพสต์ไว้ก่อน ตอนนี้ควรเป็นที่รู้จักกันดีว่าถ้าเป็นความชั่วร้ายและมักก่อให้เกิดปัญหา

การกำหนดrootคำสั่งภายในบล็อกสถานที่เป็นการปฏิบัติที่ไม่ดีแน่นอนว่ามันใช้ได้

คุณสามารถลองทำสิ่งต่อไปนี้:

server {
    location / {
        location ~* \.php$ {
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_pass 127.0.0.1:9000;
            try_files $uri @yii =404;
        }
    }
    location @yii {
        fastcgi_param SCRIPT_FILENAME $document_root$yii_bootstrap;
    }
}

โปรดทราบว่าการกำหนดค่าข้างต้นไม่ได้รับการทดสอบ คุณควรดำเนินการnginx -tก่อนที่จะใช้มันเพื่อตรวจสอบปัญหาที่ nginx สามารถตรวจจับได้ทันที


1
วิธีนี้แก้ได้สำหรับฉัน ฉันไม่ทราบว่าคุณต้องขึ้นต้นด้วย $ document_root ฉันคิดว่ามันทำโดยอัตโนมัติตามราก
b01

3
หนึ่งสามารถเรียนรู้เพิ่มเติมเกี่ยวกับการปฏิบัติที่ไม่ดีของการตั้งrootภายใน
Dan Dascalescu

15
สำหรับผู้ที่ไม่เข้าใจว่าวิธีการที่ตัวแปรอาจจะผิด: เพิ่ม Nginx หลักhttpส่วนต่อไปนี้: log_format scripts '$document_root$fastcgi_script_name > $request';(หรือสิ่งที่คุณกำลังให้อาหารเพื่อ SCRIPT_FILENAME) และของคุณ:server access_log /var/log/nginx/scripts.log scriptsโหลด
ซ้ำ


3
yii_bootstrap คืออะไร
รัก

43

มันไม่ได้เสมอว่าSCRIPT_FILENAMEเป็นสิ่งที่ผิด
นอกจากนี้ยังอาจเป็นเพราะPHP กำลังทำงานเป็นผู้ใช้ / กลุ่มผิด

ตัวอย่างนี้เฉพาะกับMac OS Xซึ่งจากประสบการณ์ของฉันเป็นปัญหาที่ยากที่สุดในการติดตั้ง (Debian นั้นง่ายต่อการเปรียบเทียบ) - ฉันเพิ่งอัพเกรดจาก PHP 5.6 เป็น 7.0 โดยใช้homebrewและแพ็คเกจ josegonzalez ที่ยอดเยี่ยม

ปัญหาคือมีการสร้างสำเนาไฟล์ปรับแต่งใหม่ขึ้น

ไฟล์กำหนดค่าหลักคือ/usr/local/etc/php/7.0/php-fpm.confแต่ให้สังเกต ส่วนคำจำกัดความของพูลที่ส่วนท้ายซึ่งมีไดเรกทอรีย่อยทั้งหมด

include=/usr/local/etc/php/7.0/php-fpm.d/*.conf

ในphp-fpm.dนั้นมีwww.confไฟล์ โดยค่าเริ่มต้นนี้มี:

user = _www
group = _www

ใน OS X คุณอาจต้องเปลี่ยนสิ่งนี้เป็น:

user = [your username]
group = staff

(คุณควรพบสิ่งนี้ตรงกับls -lhdocument_root ของคุณ)

แต่น่าเสียดายที่ไม่มีการเปลี่ยนแปลงนี้คุณจะยังคงเห็นนี้ในบันทึกข้อผิดพลาด Nginx ของคุณแม้จะมองหาไฟล์ในสถานที่ที่ถูกต้อง

"Primary script unknown" while reading response header from upstream

ตรวจสอบสิ่งที่กำลังทำงานในขณะนี้:

ps aux | grep 'php-fpm'

หรือมากกว่าหมดจด:

ps aux | grep -v root | grep php-fpm | cut -d\  -f1 | sort | uniq

วิธีตรวจสอบว่าชื่อไฟล์สคริปต์ถูกต้องหรือไม่:

(ถูกขโมยจาก igorsantos07 ในคำตอบอื่น ๆ )

เพิ่มในhttpบล็อกหลัก/usr/local/etc/nginx/nginx.conf:

log_format scripts '$document_root$fastcgi_script_name > $request';

(ที่บิตแรกต้องเป็นสิ่งที่คุณกำลังใช้เพื่อให้คุณสามารถดูว่ามันถูกต้อง)

และเพื่อใช้บันทึกที่คุณเพิ่งกำหนดไว้ในserverบล็อกของเว็บไซต์ของคุณ:

access_log /var/log/nginx/scripts.log scripts;

หากถูกต้องการร้องขอ example.com/phpinfo.php จะสร้างสิ่งนี้:

/path/to/docroot/phpinfo.php > GET /phpinfo.php

คุณสามารถทำให้การกำหนดค่าปัจจุบันของคุณง่ายขึ้นได้หรือไม่?

คุณใช้location ~ \.php {บล็อกที่คุณคัดลอก / วางจากที่อื่นนอกอินเทอร์เน็ตหรือไม่? แพคเกจส่วนใหญ่อนุญาตให้คุณทำมันได้เร็วขึ้นและหมดจด เช่นบน OS X ตอนนี้คุณแค่ต้องการสิ่งนี้:

location ~ \.php {
    fastcgi_pass 127.0.0.1:9000;
    include snippets/fastcgi-php.conf;

    # any site specific settings, e.g. environment variables
}

สิ่งที่ต้องการ fastcgi_split_path_info, try_files และ fastcgi_index (ค่าเริ่มต้น index.php) /usr/local/etc/nginx/snippets/fastcgi-php.confอยู่ใน

ซึ่งรวมถึง/usr/local/etc/nginx/fastcgi.confรายการfastcgi_paramการตั้งค่าซึ่งรวมถึง SCRIPT_FILENAME ที่สำคัญ

อย่าทำซ้ำrootในตำแหน่งบล็อก PHP


2
ดีมาก! นั่นสำหรับฉัน! ไชโยเพื่อน!
rollsappletree

ขอบคุณ สำหรับฉันที่ fpm / nginx docker container ฉันกำลังเรียกใช้มีปัญหาสิทธิ์ในการเข้าถึงโฟลเดอร์เหล่านี้
Tek

@ คำตอบของ Fleshgrinder ผิดและคุณพูดถูก! ในกรณีของฉันมันเป็นจริงเพียงเรื่องของการแก้ไขความเป็นเจ้าของในส่วน/etc/php/7.0/php-fpm.d/www.confไฟล์ ไชโยคุณ :) ผู้คนจำนวนมากอาจเริ่มเห็นปัญหานี้เช่นกันเนื่องจากความนิยมคนจรจัดยังคงเติบโต
user392778

ไม่สามารถพบสิ่งใด/usr/local/etc/nginx/snippets/fastcgi-php.confในแม็คของฉัน .. แต่ฉันพบ/usr/local/etc/nginx/fastcgi.conf
abbood

ทำได้ดีนี่!! เคยดิ้นรนหลายชั่วโมง
fonini

7

ตกลง 3 สิ่งที่ฉันค้นพบหลังจากผ่านไปหนึ่งวัน

  1. ด้วยเหตุผลบางอย่างฉันมีบางสิ่งที่ทำงานบนพอร์ต 9000 ดังนั้นฉันจึงเปลี่ยนเป็น 9001
  2. ไซต์เริ่มต้นของฉันกำลังดักข้อมูลไซต์ใหม่ของฉันอีกครั้งฉันไม่เข้าใจว่าทำไมไม่ควรทำ แต่ฉันเพิ่งยกเลิกการเชื่อมโยง
  3. Nginx จะไม่ทำการเชื่อมโยง sym โดยอัตโนมัติสำหรับไซต์ที่เปิดใช้งานไซต์

หวังว่านี้ช่วยให้ใครบางคนมีปัญหาบางอย่าง!


สวัสดี @ we0 ฉันประสบปัญหาเดียวกันกับการตั้งค่าของฉัน ฉันได้เรียกใช้แอปอื่นของฉันที่พอร์ต 3001 ดังนั้นฉันจึงต้องโฮสต์แอป php ของฉันที่พอร์ต 3002 คุณสามารถดูโพสต์ดั้งเดิมของฉันได้ที่นี่: stackoverflow.com/questions/33229867/…และstackoverflow.com/questions/33409539/และอีกอย่างก็คือstackoverflow.com/questions/33519989/... คุณมีความคิดใด ๆ
Manish Sapkal

3
การทำให้ symlink โดยอัตโนมัติจากไซต์ที่มีให้กับไซต์ที่เปิดใช้งานนั้นน่าจะเป็นเรื่องที่ไม่พึงประสงค์ ขึ้นอยู่กับคุณที่จะสร้าง symlink เหล่านั้นเพื่อให้คุณสามารถควบคุมว่าไซต์ใดที่ 'เปิด' และที่ 'ปิด' บนเซิร์ฟเวอร์ของคุณ
Erathiel

6

พบปัญหาเดียวกันกับ nginx ที่ใหม่กว่า (v1.8) รุ่นใหม่ขอแนะนำให้ใช้แทนsnippets/fastcgi-php.conf; fastcgi.confดังนั้นหากคุณคัดลอก / วางinclude fastcgi.confจากบทช่วยสอนคุณอาจพบPrimary script unknownข้อผิดพลาดในบันทึก


4

"ไม่ทราบสคริปต์หลัก"เกิดจากบริบทความปลอดภัยของ SELinux

ลูกค้าได้รับการตอบกลับ

ไม่พบไฟล์.

nginx error.log มีข้อความแสดงข้อผิดพลาดดังต่อไปนี้

* 19 FastCGI ส่งเป็น stderr: "ไม่รู้จักสคริปต์หลัก" ในขณะที่อ่านหัวข้อการตอบสนองจากอัปสตรีม

ดังนั้นเพียงแค่เปลี่ยนประเภทบริบทด้านความปลอดภัยของโฟลเดอร์รูทเว็บเป็นhttpd_sys_content_t

chcon -R -t httpd_sys_content_t /var/www/show




มีผู้ใช้ 3 คนสำหรับการกำหนดค่า nginx / php-fpm

/etc/nginx/nginx.conf

user nobody nobody;  ### `user-1`, this is the user run nginx woker process
...
include servers/*.conf;

/etc/nginx/conf.d/www.conf

location ~ \.php$ {
#   fastcgi_pass 127.0.0.1:9000;  # tcp socket
    fastcgi_pass unix:/var/run/php-fpm/fpm-www.sock;  # unix socket
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

/etc/php-fpm.d/www.conf

[www]
user = apache  ### `user-2`, this is the user run php-fpm pool process
group = apache

;listen = 127.0.0.1:9000  # tcp socket
listen = /var/run/php-fpm/fpm-www.sock  # unix socket

listen.onwer = nobody  ### `user-3`, this is the user for unix socket, like /var/run/php-fpm/fpm-www.sock
listen.group = nobody  # for tcp socket, these lines can be commented
listen.mode = 0660

user-1 และ user-2 ไม่จำเป็นต้องเหมือนกัน

สำหรับซ็อกเก็ตยูนิกซ์ user-1 จะต้องเหมือนกับ user-3 เนื่องจาก nginx fastcgi_pass จะต้องมีสิทธิ์ในการอ่าน / เขียนบนซ็อกเก็ต unix

มิฉะนั้น nginx จะได้รับ502 Bad Gatewayและ nginx error.log มีข้อความแสดงข้อผิดพลาดดังต่อไปนี้

* 36 connect () to unix: /var/run/php-fpm/fpm-www.sock ล้มเหลว (13: ปฏิเสธการอนุญาต) ขณะเชื่อมต่อกับ upstream

และผู้ใช้ / กลุ่มของเว็บรูทโฟลเดอร์ (/ var / www / show) ไม่จำเป็นต้องเหมือนกันกับผู้ใช้ 3 คนนี้


2

ผมมีปัญหานี้ด้วยและฉันจะแก้ไขได้โดยการแลกเปลี่ยนสายและinclude fastcgi_paramsfastcgi_param SCRIPT_FILENAME ...

แท้จริงแล้ว nginx ตั้งค่าสุดท้ายของแต่ละพารามิเตอร์ FastCGI ดังนั้นคุณต้องใส่ค่าของคุณหลังจากค่าเริ่มต้นที่รวมอยู่ใน fastcgi_params


1

ฉันแก้ไขปัญหานี้โดยการปิด SELINUX ในระบบ CentOS7.3

ขั้นตอน

  • exec setenforce 0
  • คุณต้องแก้ไขไฟล์กำหนดค่าด้วย

vim /etc/selinux/config set SELINUX to disabled


0

ฉันพบคำถามของคุณที่กำลังมองหาข้อความแสดงข้อผิดพลาดเดียวกัน แต่ใช้ apache + php-fpm (ไม่ใช่ nginx) สำหรับฉันปัญหาคือการเฉือนในที่ผิด: ข้อเสนอแนะการติดตั้งจำนวนมากรวมถึงบรรทัดของแบบฟอร์ม:

SetHandler "proxy:unix:/path/to/file.socket|fcgi://localhost/:9000"

โดยการวางเครื่องหมายทับหลังหมายเลขพอร์ตดังนี้:

SetHandler "proxy:unix:/path/to/file.socket|fcgi://localhost:9000/"

ปัญหาหายไปจากฉัน บางทีคุณสามารถทำสิ่งที่คล้ายกัน


0

ฉันพบคำถามเดียวกัน แต่วิธีอื่นไม่ช่วยฉันแก้ไขคำถาม!

ฉันจะแก้ไขมันฉันพบกุญแจสำคัญคือ: ผู้ใช้ Linux นำไปสู่คำถาม: FastCGI ส่งใน stderr: "ไม่รู้จักสคริปต์หลัก"

เนื่องจากผู้ใช้เริ่มต้นของ PHP-FPM: กลุ่มคือ apache: apache แต่รหัสของคุณคือ someBody: someBody ดังนั้นคุณควรเปลี่ยนผู้ใช้ถูกต้อง!

ฉันเขียนบล็อกเพื่อแก้ไขคำถามนี้คุณสามารถดูบล็อกนี้:

[Nginx FastCGI ส่งเป็น stderr: "ไม่รู้จักสคริปต์หลัก"] [1] `[1]: http://geekhades.blogspot.com/2017/06/nginx-fastcgi-sent-in-stderr-primary.html


0

ฉันโคลนไซต์ระยะไกลและ wp-config.php ที่มีอยู่แล้วมีข้อมูลฐานข้อมูลเซิร์ฟเวอร์ระยะไกล

ฉันแก้ไขปัญหานี้ได้ด้วยการตั้งค่าการตั้งค่า wordpress ในพื้นที่ของฉันด้วยข้อมูลฐานข้อมูลท้องถิ่นของฉัน


0

ฉันทำทุกอย่างจากด้านบนแพ้ 2 ชั่วโมงในการต่อสู้กับหัวและปัญหายังคงอยู่ ในที่สุดฉันก็:

sudo service php7.0-fpm restart

และวิโอล่าก็ใช้งานได้!

Btw ฉันกำลังตั้งค่าโครงการ symfony 3.4 ใหม่ด้วย nginx conf จากลิงก์: https://symfony.com/doc/3.4/setup/web_server_configuration.html

นั่นเป็นครั้งที่ห้าของฉันในการเริ่มต้นโครงการ symfony ใหม่และฉันไม่อยากจะเชื่อเลยว่า


0

ตรวจสอบการอนุญาตสำหรับไฟล์ถุงเท้า php-fpm ของคุณ แต่อย่างใดมันไม่สามารถเข้าถึงได้:

chmod 755 /usr/local/var/run/php-fpm.sock

จากนั้นลองรีสตาร์ท nginx


0

ฉันติดข้อความแปลก ๆ นี้มานานมากแล้ว ฉันไม่แน่ใจเกี่ยวกับสาเหตุเพราะทุกอย่างทำงานไปพักหนึ่งแล้วก็หยุดทำงานทันที

ฉันย่อ URL วิกิให้สั้นลงตามที่ MediaWiki กำหนดโดยใช้ Bitnami / Nginx บน Lightsail

มีการค้นหาและอ่านโพสต์มากมายดูเหมือนจะสรุปสถานการณ์ที่เป็นไปได้ทั้งหมดและฉันลองพวกเขาทั้งหมด:

  • nginx ใช้ได้แล้วโฟลเดอร์ราก php ทำงานอยู่โฟลเดอร์ย่อยไม่ทำงาน
  • เกิดข้อผิดพลาดเป็น 404 + สตริงเปลือย "ไม่พบไฟล์" ไม่ใช่โดย nginx
  • เพิ่มrootไปยังเซิร์ฟเวอร์ไม่ทำงาน
  • ตรวจสอบสิทธิ์ของโฟลเดอร์และ php-fpm / nginx, ไม่มีปัญหารูทและโฟลเดอร์ย่อยเหมือนกัน
  • ตรวจสอบคู่มือ php-fpm สำหรับการตีความรหัสข้อผิดพลาดไม่พบ
  • เปิดบันทึกการเข้าถึง php-fpm พบคำขอ URI ถูกต้อง แต่ส่งคืน 404
  • ลองเปิดโหมด verbose / debug สำหรับ php-fpm ไม่ทำงานไฟล์บันทึกข้อผิดพลาดที่ควรจะว่างเปล่าเสมอ

ดังนั้นฉันต้องลองใช้วิธีสุดท้ายเนื่องจากโฟลเดอร์ราก php ทำงานและโฟลเดอร์ย่อยไม่ได้มีความแตกต่างที่สำคัญเพียงอย่างเดียวระหว่างrootโฟลเดอร์อื่นที่ไม่ใช่โฟลเดอร์รูทที่ใช้$request_filenameและตำแหน่งโฟลเดอร์ย่อยที่ใช้$document_rootและ$fastcgi_script_nameดังนั้นฉันจึงเปลี่ยนการตั้งค่าตำแหน่งโฟลเดอร์ย่อย

ถ้าอย่างนั้นก็ใช้ได้ ... ฉันยังไม่แน่ใจว่าทำไมมันถึงได้ผล เพราะเมื่อฉันตรวจสอบล็อกการเข้าถึง php-fpm ฉันเห็น URI เดียวกันอันหนึ่งคือ 404 และอีกอันคือ 200

ป้อนคำอธิบายรูปภาพที่นี่

ความแตกต่างเพียงอย่างเดียวคือในการกำหนดค่า เนื่องจากพวกเขาสร้างผลลัพธ์เดียวกันฉันไม่รู้ว่าทำไมผลลัพธ์ออกมาต่างกัน

อย่างไรก็ตามฉันตัดสินใจที่จะโพสต์ 2 เซ็นต์ของฉันที่นี่หวังว่าจะช่วยได้

PS: ฉันหวังว่า PHP ให้ข้อความแสดงข้อผิดพลาดและโหมด verbose ที่ดีกว่าเพราะมันน่าผิดหวังจริงๆที่ไม่สามารถแยกแยะปัญหาได้และไม่มีทางที่จะเห็นข้อมูล verbose output และ debug data


-1

ลองเพิ่มคำสั่งรูทในตำแหน่ง php ของคุณ

location ~ \.php {
      root /home/willem/git/console/www;
      ...
}

1
rootสั่งควรจะตั้งอยู่บนต่อserverพื้นฐานและไม่ควรนำมาใช้ภายในใด ๆlocationบล็อก (ถ้าคุณเป็นมืออาชีพและต้องการที่จะหลีกเลี่ยงข้อบกพร่อง Nginx บางมากเป็นพิเศษในการกำหนดค่าของคุณ)
Fleshgrinder

1
@Fleshgrinder หนึ่งรูทต่อเซิร์ฟเวอร์ไม่ใช่วิธีปฏิบัติที่ดีที่สุด
Garet Claborn


@Fleshgrinder ไม่ใช่ส่วนที่คุณเชื่อมโยงพูด ตัวอย่างของการปฏิบัติที่ดีในส่วนนั้นแสดงrootคำสั่งภายในlocationบล็อก
ishigoya

@ishigoya โปรดไปที่ลิงก์อีกครั้งrootคำสั่งหลาย ๆคำในlocationบล็อกหลายอันชัดเจนภายใต้หัวข้อ BAD
Fleshgrinder
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.