ฉันได้จ้าง VPS เพื่อเล่นกับโครงการส่วนตัวบางอย่าง ในการเริ่มต้น ฉันกำลังพยายามตั้งค่าให้โฮสต์ REST API โดยใช้ Node.js เนื่องจากฉันเคยใช้ Spring Boot สำหรับสิ่งนั้นเท่านั้น
ฉันได้นำโซลูชันไปใช้โดยดัดแปลงจากคำแนะนำต่อไปนี้:
https://www.robinwieruch.de/node-express-server-rest-api (รหัส API ส่วนใหญ่มีลักษณะเช่นนี้)
https://itnext.io/building-restful-api-with-node-js-express-js-and-postgresql-the-right-way-b2e718ad1c66 (แต่ผมค่อยๆแปลงไปใช้มาตรฐานจากที่นี่นะครับ)
สำหรับการปรับใช้จริง ฉันได้เปลี่ยนเพื่อรวม API กับ Babel และฉันกำลังปรับใช้กับ PM2
https://www.nginx.com/blog/deploying-nginx-plus-as-an-api-gateway-part-1/ (ไม่ใช่พลัสแม้ว่า)
(ลิงค์ทั้งหมดเหล่านั้นมีอยู่ผ่าน http://web.archive.org/ ดังนั้นพวกเขาจะไม่ไปไหนในเร็วๆ นี้)
ฉันสร้างโปรเจ็กต์ Node.js อื่นโดยใช้ แกน เพื่อทดสอบคำขอ REST ใช้งานใน VPS เดียวกันได้ แต่ฉันต้องเปลี่ยนรหัส API เพื่อผูก โลคัลโฮสต์
. ก่อนหน้านี้ ไม่มีการระบุที่อยู่การโยงไว้ การผูกกับ IPv6 โลคัลโฮสต์
(ถ้าฉันเข้าใจถูกต้อง) และเนื่องจากโดเมนของฉันใช้งานไม่ได้กับ IPv6 ฉันจึงจะใช้ IPv4 ต่อไป
ในด้าน NGINX ฉันได้ทำการเปลี่ยนแปลงมากที่สุดเนื่องจากตอนนี้ฉันมีเพียง 1 API และฉันจะไม่ใช้การทำโหลดบาลานซ์ นอกจากนี้ ฉันได้เปลี่ยนนโยบายการตั้งชื่อแล้ว ฉันจะใช้ example.com/app_or_project_name/api_or_web_or_other_kind_of_interface/project_specific_routes
.
นี่คือลักษณะของการตั้งค่า NGINX ของฉัน ฉันไม่ระบุชื่อและเปลี่ยนเป็นชื่อเดียวกับตัวอย่าง NGINX:
api_backends.conf
คลังสินค้าต้นน้ำ {
โซน api 64k;
เซิร์ฟเวอร์ 127.0.0.1:some_port_number;
}
นั่นคือโฮสต์ REST API และหมายเลขพอร์ต
api_conf.d/warehouse_api.conf
# API คลังสินค้า
#
ตำแหน่ง /คลังสินค้า/api/ {
# การกำหนดค่านโยบายที่นี่ (การรับรองความถูกต้อง การจำกัดอัตรา การบันทึก และอื่นๆ...)
#
access_log /var/log/nginx/warehouse_api.log หลัก;
auth_request /_validate_apikey;
# การกำหนดเส้นทาง URI
#
proxy_pass http://คลังสินค้า;
กลับ 404; #จับทั้งหมด
}
api_gateway.conf
รวมถึง api_backends.conf;
รวมถึง api_keys.conf;
เซิร์ฟเวอร์ {
access_log /var/log/nginx/api_access.log หลัก; # แต่ละ API อาจบันทึกไปยังไฟล์แยกต่างหาก
ฟัง 443 ssl;
server_name my-domain.net;
#การกำหนดค่า TLS
ssl_certificate /etc/letsencrypt/live/my-domain.net/fullchain.pem; # จัดการโดย Certbot
ssl_certificate_key /etc/letsencrypt/live/my-domain.net/privkey.pem; # จัดการโดย Certbot
ssl_session_cache ที่ใช้ร่วมกัน: SSL:10m;
ssl_session_timeout 5 นาที;
ssl_ciphers สูง:!aNULL:!MD5;
ssl_protocols TLSv1.2 TLSv1.3;
# คำจำกัดความของ API หนึ่งรายการต่อไฟล์
รวม api_conf.d/*.conf;
#ตอบผิด
# error_page 404 = @400; # เส้นทางที่ไม่ถูกต้องถือเป็นคำขอที่ไม่ถูกต้อง
เปิด proxy_intercept_errors; # อย่าส่งข้อผิดพลาดส่วนหลังไปยังไคลเอนต์
รวมถึง api_json_errors.conf; # การตอบสนองข้อผิดพลาด JSON ที่เป็นมิตรกับไคลเอ็นต์ API
แอปพลิเคชัน default_type/json; # หากไม่มีประเภทเนื้อหาให้ถือว่า JSON
# การตรวจสอบคีย์ API
ตำแหน่ง = /_validate_apikey {
ภายใน;
ถ้า ($http_apikey = "") {
กลับ 401; #ไม่ได้รับอนุญาต
}
ถ้า ($api_client_name = "") {
กลับ 403; # ต้องห้าม
}
กลับ 204; # ตกลง (ไม่มีเนื้อหา)
}
}
ฉันอาจจะตั้งค่า proxy_intercept_errors
ถึง ปิด
เมื่อมันทำงาน ฉันจะต้องทำการทดสอบเพื่อดูว่ามีการเปลี่ยนแปลงอะไรบ้างในคำตอบ
api_json_errors.conf
เหมือนกับตัวอย่าง
default.conf
เซิร์ฟเวอร์ {
server_name www.my-domain.net;
#access_log /var/log/nginx/host.access.log หลัก;
ที่ตั้ง / {
รูท /usr/share/nginx/html;
ดัชนี index.html index.htm;
}
#error_page 404 /404.html;
# เปลี่ยนเส้นทางหน้าข้อผิดพลาดของเซิร์ฟเวอร์ไปยังหน้าสแตติก /50x.html
#
error_page 500 502 503 504 /50x.html;
ตำแหน่ง = /50x.html {
รูท /usr/share/nginx/html;
}
# พร็อกซี่สคริปต์ PHP เพื่อ Apache ฟัง 127.0.0.1:80
#
#location ~ \.php$ {
#proxy_pass http://127.0.0.1;
#}
# ส่งสคริปต์ PHP ไปยังเซิร์ฟเวอร์ FastCGI ที่รับฟัง 127.0.0.1:9000
#
#location ~ \.php$ {
# รูท html;
# fastcgi_pass 127.0.0.1:9000;
#fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# รวม fastcgi_params;
#}
# ปฏิเสธการเข้าถึงไฟล์ .htaccess หากรูทเอกสารของ Apache
# เห็นด้วยกับของ nginx
#
#location ~ /\.ht {
#ปฏิเสธทั้งหมด
#}
ฟัง 443 ssl; # จัดการโดย Certbot
ssl_certificate /etc/letsencrypt/live/my-domain.net/fullchain.pem; # จัดการโดย Certbot
ssl_certificate_key /etc/letsencrypt/live/my-domain.net/privkey.pem; # จัดการโดย Certbot
รวม /etc/letsencrypt/options-ssl-nginx.conf; # จัดการโดย Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # จัดการโดย Certbot
}
เซิร์ฟเวอร์ {
ถ้า ($host = www.my-domain.net) {
ส่งคืน 301 https://$host$request_uri;
} # จัดการโดย Certbot
ถ้า ($host = my-domain.net) {
ส่งคืน 301 https://$host$request_uri;
} # จัดการโดย Certbot
ฟัง 80;
server_name my-domain.net www.my-domain.net;
กลับ 404; # จัดการโดย Certbot
}
ฉันต้องทำการเปลี่ยนแปลงบางอย่างที่นี่เนื่องจากมีที่อยู่และพอร์ตที่ซ้ำกัน เซิร์ฟเวอร์
การกำหนดค่า
nginx.conf
ผู้ใช้ nginx;
worker_processes อัตโนมัติ
ข้อมูล error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
load_module /etc/nginx/modules/ngx_http_js_module.so;
เหตุการณ์ {
worker_connections 1024;
}
http {
รวม /etc/nginx/mime.types;
แอปพลิเคชัน default_type/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request"'
'$สถานะ $body_bytes_sent "$http_referer"'
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log หลัก;
ส่งไฟล์บน;
#tcp_nopush บน;
keepalive_timeout 65;
รวม /etc/nginx/api_gateway.conf; # การกำหนดค่าเกตเวย์ API ทั้งหมด
รวม /etc/nginx/conf.d/*.conf; # การเข้าชมเว็บปกติ
}
เมื่อฉันเรียกใช้โครงการทดสอบเดียวกันนอก VPS ฉันได้รับผลลัพธ์ต่อไปนี้:
{
ข้อความ: 'คำขอล้มเหลวด้วยรหัสสถานะ 404'
ชื่อ: 'ข้อผิดพลาด',
คำอธิบาย: ไม่ได้กำหนด,
จำนวน: ไม่ได้กำหนด,
ชื่อไฟล์: ไม่ได้กำหนด,
lineNumber: ไม่ได้กำหนด,
จำนวนคอลัมน์: ไม่ได้กำหนด,
ซ้อนกัน: '...',
การกำหนดค่า: {
URL: 'https://my-domain.net/warehouse/api/messages',
วิธีการ: 'รับ',
ส่วนหัว: {
ยอมรับ: 'application/json, text/plain, */*',
'การควบคุมการเข้าถึง - อนุญาต - ต้นทาง': '*',
'ตัวแทนผู้ใช้': 'axios/0.21.1'
},
transformRequest: [ [ฟังก์ชั่น: transformRequest] ],
transformResponse: [ [ฟังก์ชัน: converterResponse] ],
หมดเวลา: 0,
อะแดปเตอร์: [ฟังก์ชัน: httpAdapter],
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
ความยาวเนื้อหาสูงสุด: -1,
ความยาวลำตัวสูงสุด: -1,
ตรวจสอบสถานะ: [ฟังก์ชัน: ตรวจสอบสถานะ],
apikey: '...',
ข้อมูล: ไม่ได้กำหนด
},
รหัส: ไม่ได้กำหนด
}
สิ่งหนึ่งที่ฉันคิดออกคือข้อผิดพลาด 404 ถูกส่งกลับโดย warehouse_api.conf
เพราะถ้าฉันเปลี่ยนไป กลับ 404;
ไปที่รหัสอื่น นั่นคือรหัสที่ฉันจะได้รับ
ฉันเปิดใช้งานการดีบักใน NGINX แล้ว แต่ฉันไม่เข้าใจผลลัพธ์ แม้จะค้นหาเพียงเล็กน้อย:
22/07/2021 11:54:17 [แก้ไขข้อบกพร่อง] nginx_pid#nginx_pid: *757 โดยใช้ตำแหน่ง: @404 "/warehouse/api/messages?"
22/07/2021 11:54:31 [แก้ปัญหา] nginx_pid#nginx_pid: *758 http cl:-1 สูงสุด:1048576
2021/07/22 11:54:31 [debug] nginx_pid#nginx_pid: *758 เฟสเขียนใหม่: 3
22/07/2021 11:54:31 [debug] nginx_pid#nginx_pid: *758 http จบคำขอ: 404, "/warehouse/api/messages?" ก:1, ค:1
22/07/2021 11:54:31 [แก้ไขข้อบกพร่อง] nginx_pid#nginx_pid: *758 http การตอบกลับพิเศษ: 404, "/warehouse/api/messages?"
22/07/2021 11:54:31 [debug] nginx_pid#nginx_pid: *758 ตำแหน่งทดสอบ: "@400"
22/07/2021 11:54:31 [debug] nginx_pid#nginx_pid: *758 ตำแหน่งทดสอบ: "@401"
22/07/2021 11:54:31 [debug] nginx_pid#nginx_pid: *758 ตำแหน่งทดสอบ: "@403"
22/07/2021 11:54:31 [debug] nginx_pid#nginx_pid: *758 ตำแหน่งทดสอบ: "@404"
22/07/2021 11:54:31 [แก้ปัญหา] nginx_pid#nginx_pid: *758 โดยใช้ตำแหน่ง: @404 "/warehouse/api/messages?"
ฉันลองใช้วิธีการต่างๆ สองสามวิธีเพื่อค้นหาเกี่ยวกับทั้งหมดนี้ แต่ไม่พบโอกาสในการขายเลย
แล้วเกิดอะไรขึ้น มีอะไรผิดปกติ และฉันจะแก้ไขได้อย่างไร
ขอบคุณล่วงหน้า.
อัพเดท 2021-08-04
ตามคำตอบของ @ jose-fernando-lopez-fernandez ฉันเปลี่ยนไป api_conf.d/warehouse_api.conf
ดังต่อไปนี้:
# API คลังสินค้า
#
ตำแหน่ง /คลังสินค้า/api/ {
# การกำหนดค่านโยบายที่นี่ (การรับรองความถูกต้อง การจำกัดอัตรา การบันทึก และอื่นๆ...)
#
access_log /var/log/nginx/warehouse_api.log หลัก;
auth_request /_validate_apikey;
# การกำหนดเส้นทาง URI
#
ตำแหน่ง /คลังสินค้า/api/ {
proxy_pass http://คลังสินค้า;
}
กลับ 404; #จับทั้งหมด
}
เพื่อให้สอดคล้องกับตัวอย่างที่ฉันกำลังติดตาม ฉันทดสอบอีกครั้งและได้รับข้อผิดพลาด 401 แทน ฉันตรวจสอบแล้วและกำลังจะผ่านอย อภิคี
ไม่ถูกต้อง
ฉันแก้ไข ทดสอบอีกครั้ง และได้ 404 อีกครั้ง แต่ตอนนี้ฉันได้รับผลลัพธ์มากขึ้นจาก nginx-ดีบัก
.
ฉันไม่เปิดเผยตัวตน ฉันเปลี่ยนแล้ว อภิคี
โดยคนอื่นที่ฉันสร้างขึ้นและจะไม่ใช้เพื่ออะไร
ฉันยังได้เปลี่ยน posix_memalign
, เพิ่มการล้าง http
, ฟรี
, นักเขียนลูกโซ่ใน
และ มัลลอค
ด้วยสตริงที่มีความยาวเท่ากันกับไบต์สุ่มฉันไม่รู้ว่าควรจะไม่ระบุชื่อหรือไม่ หากจำเป็นสำหรับคำตอบของคำถามนี้ โปรดถาม แล้วเราจะเพิ่มกลับเข้าไปตามความจำเป็นที่ควรทราบ
ต่อไปนี้:
2021/08/04 17:43:08 [แก้ปัญหา] nginx_pid#nginx_pid: *1 http cl:-1 สูงสุด:1048576
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 เฟสเขียนใหม่: 3
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 โพสต์เฟสเขียนใหม่: 4
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 เฟสทั่วไป: 5
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 เฟสทั่วไป: 6
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 เฟสทั่วไป: 7
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 เฟสการเข้าถึง: 8
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 เฟสการเข้าถึง: 9
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 เฟสการเข้าถึง: 10
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 ตัวจัดการคำขอตรวจสอบสิทธิ์
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http คำขอย่อย "/_validate_apikey?"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http โพสต์คำขอ: "/_validate_apikey?"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 เฟสเขียนใหม่: 1
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 ตำแหน่งทดสอบ: "/warehouse/api/"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 ตำแหน่งทดสอบ: "/_validate_apikey"
2021/08/04 17:43:08 [แก้ไขข้อบกพร่อง] nginx_pid#nginx_pid: *1 โดยใช้การกำหนดค่า "=/_validate_apikey"
2021/08/04 17:43:08 [แก้ปัญหา] nginx_pid#nginx_pid: *1 http cl:-1 สูงสุด:1048576
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 เฟสเขียนใหม่: 3
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http สคริปต์ var
2021/08/04 17:43:08 [ดีบัก] nginx_pid#nginx_pid: *1 http สคริปต์ var: "o6ZlKSX24MCY/uPwCRl80WAS"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 ค่าสคริปต์ http: ""
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 สคริปต์ http เท่ากับ
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 สคริปต์ http เท่ากับ: ไม่
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 สคริปต์ http ถ้า
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 สคริปต์ http ถ้า: เท็จ
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http สคริปต์ var
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http แผนที่เริ่มต้น
2021/08/04 17:43:08 [ดีบัก] nginx_pid#nginx_pid: *1 http สคริปต์ var: "o6ZlKSX24MCY/uPwCRl80WAS"
2021/08/04 17:43:08 [แก้ปัญหา] nginx_pid#nginx_pid: *1 แผนที่ http: "o6ZlKSX24MCY/uPwCRl80WAS" "client_one"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http สคริปต์ var: "client_one"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 ค่าสคริปต์ http: ""
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 สคริปต์ http เท่ากับ
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 สคริปต์ http เท่ากับ: ไม่
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 สคริปต์ http ถ้า
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 สคริปต์ http ถ้า: เท็จ
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http จบคำขอ: 0, "/_validate_apikey?" ก:1, ค:2
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 คำขอรับรองความถูกต้องเสร็จสิ้น s:204
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http คำขอผู้ปกครองปลุก: "/warehouse/api/messages?"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http โพสต์คำขอ: "/warehouse/api/messages?"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 เฟสการเข้าถึง: 10
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 ตัวจัดการคำขอตรวจสอบสิทธิ์
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 ตัวแปรชุดคำขอรับรองความถูกต้อง
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 เฟสการเข้าถึงโพสต์: 11
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 เฟสทั่วไป: 12
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 เฟสทั่วไป: 13
2021/08/04 17:43:08 [แก้ปัญหา] nginx_pid#nginx_pid: *1 posix_memalign: 218512C89A2ED401:4096 @16
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http เริ่มต้นสตรีม, ตัวจับเวลาไคลเอนต์: 0
2021/08/04 17:43:08 [แก้ไขข้อบกพร่อง] nginx_pid#nginx_pid: *1 epoll เพิ่มเหตุการณ์: fd:3 op:3 ev:80002005
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http สำเนาสคริปต์: "โฮสต์"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http สคริปต์ var: "warehouse"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 สำเนาสคริปต์ http: "การเชื่อมต่อ"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http สำเนาสคริปต์: "ปิด"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http สำเนาสคริปต์: ""
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http สำเนาสคริปต์: ""
2021/08/04 17:43:08 [แก้ไขข้อบกพร่อง] nginx_pid#nginx_pid: *1 ส่วนหัวของพร็อกซี http: "ยอมรับ: แอปพลิเคชัน/json, ข้อความ/ธรรมดา, */*"
2021/08/04 17:43:08 [แก้ไขข้อบกพร่อง] nginx_pid#nginx_pid: *1 ส่วนหัวของพร็อกซี http: "Access-Control-Allow-Origin: *"
2021/08/04 17:43:08 [แก้ปัญหา] nginx_pid#nginx_pid: *1 http ส่วนหัวพร็อกซี: "apikey: o6ZlKSX24MCY/uPwCRl80WAS"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http ส่วนหัวพร็อกซี: "User-Agent: axios/0.21.1"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http ส่วนหัวพร็อกซี:
"รับ /warehouse/api/messages HTTP/1.0
โฮสต์: คลังสินค้า
การเชื่อมต่อ: ปิด
ยอมรับ: แอปพลิเคชัน/json, ข้อความ/ธรรมดา, */*
การควบคุมการเข้าถึงอนุญาตแหล่งกำเนิด: *
apikey: o6ZlKSX24MCY/uPwCRl80WAS
ตัวแทนผู้ใช้: axios/0.21.1
"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 เพิ่มการล้างข้อมูล http: 90C9DA232086B6FA
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 รับ rr peer ลอง: 1
2021/08/04 17:43:08 [แก้ปัญหา] nginx_pid#nginx_pid: *1 สตรีมซ็อกเก็ต 15
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 epoll เพิ่มการเชื่อมต่อ: fd:15 ev:80002005
2021/08/04 17:43:08 [แก้ไขข้อบกพร่อง] nginx_pid#nginx_pid: *1 เชื่อมต่อกับ 127.0.0.1:some_port_number, fd:15 #2
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http เชื่อมต่ออัปสตรีม: -2
2021/08/04 17:43:08 [แก้ปัญหา] nginx_pid#nginx_pid: *1 posix_memalign: A9E50626EC2A1D36:128 @16
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 เพิ่มตัวจับเวลาเหตุการณ์: 15:60000:878601635
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http จบคำขอ: -4, "/warehouse/api/messages?" ก:1, ค:2
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http จำนวนคำขอ:2 blk:0
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 คำขอเรียกใช้ http: "/warehouse/api/messages?"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http ไคลเอนต์ตรวจสอบอัปสตรีม, เขียนเหตุการณ์:1, "/warehouse/api/messages"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http คำขออัพสตรีม: "/warehouse/api/messages?"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http ตัวจัดการคำขอส่งอัปสตรีม
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http คำขอส่งอัปสตรีม
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http อัปสตรีมส่งเนื้อหาคำขอ
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 ตัวเขียนเชน buf fl:1 s:225
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 ตัวเขียนเชนใน: 4C4F626384F523C9
2021/08/04 17:43:08 [แก้ปัญหา] nginx_pid#nginx_pid: *1 writev: 225 จาก 225
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 ตัวเขียนเชนออก: 0000000000000000
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 ตัวจับเวลาเหตุการณ์ del: 15:878601635
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 เพิ่มตัวจับเวลาเหตุการณ์: 15:60000:878601636
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http คำขออัพสตรีม: "/warehouse/api/messages?"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http ส่วนหัวของกระบวนการอัปสตรีม
2021/08/04 17:43:08 [แก้ไขข้อบกพร่อง] nginx_pid#nginx_pid: *1 malloc: 1D36E73206B5EE11:4096
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 recv: eof:1, avail:-1
2021/08/04 17:43:08 [แก้ไขข้อบกพร่อง] nginx_pid#nginx_pid: *1 recv: fd:15 444 จาก 4096
2021/08/04 17:43:08 [แก้ไขข้อบกพร่อง] nginx_pid#nginx_pid: *1 http สถานะพร็อกซี 404 "ไม่พบ 404"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http ส่วนหัวพร็อกซี: "X-Powered-By: Express"
2021/08/04 17:43:08 [แก้ไขข้อบกพร่อง] nginx_pid#nginx_pid: *1 ส่วนหัวของพร็อกซี http: "Access-Control-Allow-Origin: *"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http proxy header: "Content-Security-Policy: default-src 'none'"
2021/08/04 17:43:08 [แก้ไขข้อบกพร่อง] nginx_pid#nginx_pid: *1 ส่วนหัวของพร็อกซี http: "X-Content-Type-Options: nosniff"
2021/08/04 17:43:08 [แก้ไขข้อบกพร่อง] nginx_pid#nginx_pid: *1 ส่วนหัวของพร็อกซี http: "ประเภทเนื้อหา: ข้อความ/html; charset=utf-8"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http ส่วนหัวพร็อกซี: "ความยาวเนื้อหา: 168"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http proxy header: "วันที่: พุธ 04 ส.ค. 2021 17:43:08 GMT"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http ส่วนหัวพร็อกซี: "การเชื่อมต่อ: ปิด"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http proxy header เสร็จแล้ว
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 สรุปคำขออัปสตรีม http: 404
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 จบคำขอพร็อกซี http
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 ฟรี rr เพียร์ 1 0
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 ปิดการเชื่อมต่อต้นทาง http: 15
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 ฟรี: A9E50626EC2A1D36, ไม่ได้ใช้: 48
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 ตัวจับเวลาเหตุการณ์ del: 15:878601636
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 การเชื่อมต่อที่ใช้ซ้ำได้: 0
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 http จบคำขอ: 404, "/warehouse/api/messages?" ก:1, ค:1
2021/08/04 17:43:08 [แก้ไขข้อบกพร่อง] nginx_pid#nginx_pid: *1 http การตอบกลับพิเศษ: 404, "/warehouse/api/messages?"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 ตำแหน่งทดสอบ: "@400"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 ตำแหน่งทดสอบ: "@401"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 ตำแหน่งทดสอบ: "@403"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 ตำแหน่งทดสอบ: "@404"
2021/08/04 17:43:08 [debug] nginx_pid#nginx_pid: *1 โดยใช้ตำแหน่ง: @404 "/warehouse/api/messages?"
มันดูแปลกสำหรับฉันที่ดูเหมือนว่าจะพิจารณา คลังสินค้า
เป็นชื่อโฮสต์ ในทางกลับกัน NGINX กำหนดที่อยู่บางแห่งด้วยชื่อนั้น ดังนั้นอาจเกี่ยวข้องกับที่อยู่นั้น