Score:0

วิธีตั้งค่าเซิร์ฟเวอร์ websocket พร้อมกับแบ็กเอนด์ laravel สองอันและสปา

ธง fr

ฉันมีการตั้งค่าแบ็กเอนด์ laravel สองรายการในเส้นทางที่ต่างกัน และมีสปาบนรูท ตอนนี้ฉันต้องการตั้งค่าเซิร์ฟเวอร์ websocket พร้อมกับมัน นี่คือเว็บไซต์ของฉัน.conf


############## block-4 : การทดสอบไดเรกทอรีย่อยหลายรายการ ############
เซิร์ฟเวอร์ {
    ฟัง 80;
    # ชื่อเซิร์ฟเวอร์ abc.xyz;
    ชื่อเซิร์ฟเวอร์ _;
    รูท /var/www/html/abc.xyz;
    # ราก /var/www/html;

    add_header X-Frame-ตัวเลือก "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    ดัชนี index.html index.php;

 
    ที่ตั้ง / {
        # ราก /var/www/html/abc.xyz;
        try_files $uri /index.html ;
    }

    ชุดอักขระ utf-8;

    สถานที่ = /favicon.ico {
        access_log off; ปิด log_not_found;
    }
    ตำแหน่ง = /robots.txt {
        access_log off; ปิด log_not_found;
    }

    # error_page 404 /index.php;

############## block-4 : การทดสอบไดเรกทอรีย่อยหลายรายการ ############
เซิร์ฟเวอร์ {
    ฟัง 80;
    # ชื่อเซิร์ฟเวอร์ abc.xyz;
    ชื่อเซิร์ฟเวอร์ _;
    รูท /var/www/html/abc.xyz;
    # ราก /var/www/html;

    add_header X-Frame-ตัวเลือก "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    ดัชนี index.html index.php;

 
    ที่ตั้ง / {
        # ราก /var/www/html/abc.xyz;
        try_files $uri /index.html ;
    }

    ชุดอักขระ utf-8;

    สถานที่ = /favicon.ico {
        access_log off; ปิด log_not_found;
    }
    ตำแหน่ง = /robots.txt {
        access_log off; ปิด log_not_found;
    }

    # error_page 404 /index.php;

    # BACKEND คำแนะนำในการเขียนตำแหน่งใหม่
    ตำแหน่ง / แบ็กเอนด์ {
        นามแฝง /var/www/html/abc.xyz/backend;

        try_files $uri $uri/ @แบ็คเอนด์;

        ตำแหน่ง ~ \.php$ {
            รวม fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            fastcgi_pass ยูนิกซ์:/var/run/php/php8.0-fpm.sock;
        }
    }

    ตำแหน่ง @แบ็กเอนด์ {
        # เขียนใหม่ /backend/(.*)$ /backend/index.php?/$1 สุดท้าย;
        เขียนใหม่ ^/backend/(.*)$ /backend/index.php last;
    }
    # จุดสิ้นสุดของตำแหน่ง BACKEND


    # BACKEND คำแนะนำในการเขียนตำแหน่งใหม่
    ที่ตั้ง /api {
        นามแฝง /var/www/html/abc.xyz/api;

        try_files $uri $uri/ @api;

        ตำแหน่ง ~ \.php$ {
            รวม fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            fastcgi_pass ยูนิกซ์:/var/run/php/php8.0-fpm.sock;
        }
    }

    ที่ตั้ง @api {
        เขียนใหม่ /api/(.*)$ /api/index.php?/$1 สุดท้าย;
    }
    # จุดสิ้นสุดของตำแหน่ง BACKEND


    # phpmyadmin เขียนกฎใหม่
    ตำแหน่ง /phpmyadmin {
        รูท /usr/share/;
        ดัชนี index.php index.html index.htm;
        ตำแหน่ง ~ ^/phpmyadmin/(.+\.php)$ {
            try_files $uri =404;
            รูท /usr/share/;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            fastcgi_pass ยูนิกซ์:/var/run/php/php8.0-fpm.sock;
            fastcgi_index index.php;
            รวม /etc/nginx/fastcgi_params;
        }

        ตำแหน่ง ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
            รูท /usr/share/;
        }
    }
    # สิ้นสุดบล็อก phpmyadmin ที่นี่

    # การกำหนดค่าเว็บซ็อกเก็ตที่นี่ 
  ที่ตั้ง /ws* {
    proxy_pass http://127.0.0.1:6001;
    proxy_set_header โฮสต์ $host;
    proxy_read_timeout 60;
    proxy_connect_timeout 60;
    ปิด proxy_redirect;

    # อนุญาตให้ใช้ websockets
    proxy_http_version 1.1;
    proxy_set_header อัพเกรด $http_upgrade;
    proxy_set_header การเชื่อมต่อ 'อัปเกรด';
    proxy_set_header โฮสต์ $host;
    proxy_cache_bypass $http_upgrade;
  }
    # สิ้นสุดการกำหนดค่า websocket


    สถานที่ ~ /\.(?!เป็นที่รู้จัก).* {
        ปฏิเสธทั้งหมด
    }
}

############# สิ้นสุดบล็อก 4 ######################


เดอะ ที่ตั้ง /ว บล็อกนำมาจากเอกสาร laravel websockets แต่บล็อกตำแหน่งนี้ให้ข้อผิดพลาด 404 ไม่พบ แต่การกำหนดค่า nginx นี้ใช้ไม่ได้ โครงการเว็บไซต์ laravel ของฉันทำงานได้ดีบน localhost

แก้ไข

นี่คือผลลัพธ์ของ lsof -i :80,443,6001

คำสั่ง PID ผู้ใช้ ประเภท FD ขนาดอุปกรณ์/ปิด ชื่อโหนด
php 414490 รูท 5u IPv4 5974385 0t0 TCP *:x11-1 (ฟัง)
php 414490 รูท 6u IPv4 5991457 0t0 TCP localhost.localdomain:x11-1->localhost.localdomain:35684 (สร้างแล้ว)
nginx 415533 รูท 6u IPv4 5990824 0t0 TCP *:https (ฟัง)
nginx 415533 รูท 7u IPv4 5990825 0t0 TCP *:http (ฟัง)
nginx 415534 www-data 6u IPv4 5990824 0t0 TCP *:https (ฟัง)
nginx 415534 www-data 7u IPv4 5990825 0t0 TCP *:http (ฟัง)
nginx 415535 www-data 6u IPv4 5990824 0t0 TCP *:https (ฟัง)
nginx 415535 www-data 7u IPv4 5990825 0t0 TCP *:http (ฟัง)
nginx 415536 ​​www-data 6u IPv4 5990824 0t0 TCP *:https (ฟัง)
nginx 415536 ​​www-data 7u IPv4 5990825 0t0 TCP *:http (ฟัง)
nginx 415537 www-data 6u IPv4 5990824 0t0 TCP *:https (ฟัง)
nginx 415537 www-data 7u IPv4 5990825 0t0 TCP *:http (ฟัง)
nginx 415538 www-data 6u IPv4 5990824 0t0 TCP *:https (ฟัง)
nginx 415538 www-data 7u IPv4 5990825 0t0 TCP *:http (ฟัง)
nginx 415539 www-data 6u IPv4 5990824 0t0 TCP *:https (ฟัง)
nginx 415539 www-data 7u IPv4 5990825 0t0 TCP *:http (ฟัง)
nginx 415539 www-data 8u IPv4 5985866 0t0 TCP linux:https->157.42.56.21:55728 (สร้างแล้ว)
nginx 415539 www-data 12u IPv4 5985868 0t0 TCP localhost.localdomain:35684->localhost.localdomain:x11-1 (สร้างแล้ว)
djdomi avatar
za flag
Laravel ฟังพอร์ตใด
rajesh_chaurasiya avatar
fr flag
@djdomi คุณกำลังขอพอร์ต http เริ่มต้นของ laravel หรือพอร์ต websocket หรือไม่ พอร์ตเริ่มต้น laravel 80 และสำหรับ websocket คือ 6001
djdomi avatar
za flag
แสดงให้เราเห็นว่า `lsof -i :80,443,6001`
rajesh_chaurasiya avatar
fr flag
@djdomi ฉันกำลังเพิ่มผลลัพธ์ในการแก้ไขคำถาม
djdomi avatar
za flag
บางทีคุณสามารถเข้าร่วม [thechat](https://chat.stackexchange.com/rooms/126791/thechat) เพื่อย่อให้สั้นลง แต่ฉันเห็น NGINX ทำงานบน 2 พอร์ตนี้เท่านั้น - แต่ฉันเห็นว่าคุณกำลังใช้งาน lsof เวอร์ชันที่ใหม่กว่า ดังนั้น `lsof -P -i :80,443,6001` อาจมีการอัปเดต :)
rajesh_chaurasiya avatar
fr flag
@djdomi ฉันได้ย้ายออกจากการกำหนดค่า nginx นี้แล้ว ครั้งนี้ฉันสร้างบล็อกเซิร์ฟเวอร์สำหรับ websocket ในโดเมนย่อยอื่น ที่ได้ผล แต่ก็ยังใช้งานไม่ได้ตามที่คาดไว้ แต่ฉันอยากจะลอง
djdomi avatar
za flag
@rajeshchaurasiya โดเมนย่อย IMHO นั้นดีกว่าสำหรับสิ่งนั้นแทนที่จะเป็นไดเรกทอรีย่อย แต่บางทีคุณอาจลืมที่จะโหลด nginx ใหม่และคราวนี้คุณทำมันเนื่องจากการเปลี่ยนแปลงเป็นโดเมนย่อย? :)
rajesh_chaurasiya avatar
fr flag
@djdomi ไม่ครับ ฉันจำกฎนี้ได้ ฉันได้โหลดใหม่และรีสตาร์ท (เพื่อการป้องกันเป็นพิเศษ) การกำหนดค่า nginx ฉันคิดว่าปัญหาอาจอยู่ในบล็อกตำแหน่ง แต่ขอบคุณท่านสำหรับความสนใจของคุณ ฉันจะติดต่อกลับ

โพสต์คำตอบ

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