คำถามติดแท็ก nginx

Nginx ("eNgine x") เป็นเซิร์ฟเวอร์ HTTP น้ำหนักเบาประสิทธิภาพสูงพร็อกซีย้อนกลับพร็อกซีสตรีมพร็อกซี TCP และพร็อกซีเมลซึ่งวางจำหน่ายภายใต้สิทธิ์ใช้งาน BSD

3
มีวิธีที่สวยงามในการบล็อกผู้อ้างอิงหลายคนพร้อมกันหรือไม่?
เพื่อป้องกันสแปมผู้อ้างอิง nginx.conf ของฉันมีส่วนดังนี้: if ($http_referer ~* spamdomain1\.com) { return 444; } if ($http_referer ~* spamdomain2\.com) { return 444; } if ($http_referer ~* spamdomain3\.com) { return 444; } กฎเหล่านี้บอก nginx เพียงเพื่อปิดการเชื่อมต่อหากผู้ใช้มีหนึ่งในชุดอ้างอิงเหล่านี้ มีวิธีที่สง่างามกว่านี้หรือไม่? ฉันสามารถกำหนดรายการของโดเมนเหล่านี้แล้วพูดแบบ“ ถ้าผู้อ้างอิงอยู่ในรายการนี้แล้วส่งคืน 444”
21 nginx 

2
ปิดใช้งานการถอดรหัส URL ในพร็อกซี nginx
เมื่อฉันเรียกดู URL นี้: http://localhost:8080/foo/%5B-%5Dเซิร์ฟเวอร์ ( nc -l 8080) ได้รับตามที่เป็นอยู่: GET /foo/%5B-%5D HTTP/1.1 อย่างไรก็ตามเมื่อฉันพร็อกซีแอปพลิเคชันนี้ผ่าน nginx (1.1.19): location /foo { proxy_pass http://localhost:8080/foo; } คำขอเดียวกันที่ถูกส่งผ่านพอร์ต nginx ถูกส่งต่อด้วยเส้นทางที่ถอดรหัส: GET /foo/[-] HTTP/1.1 วงเล็บเหลี่ยมที่ถอดรหัสในเส้นทาง GET ทำให้เกิดข้อผิดพลาดในเซิร์ฟเวอร์เป้าหมาย ( สถานะ HTTP 400 - อักขระผิดกฎหมายในเส้นทาง ... ) เมื่อพวกเขามาถึงยังไม่ได้หลบหนี มีวิธีการปิดการใช้งานการถอดรหัส URL หรือเข้ารหัสมันกลับเพื่อให้เซิร์ฟเวอร์เป้าหมายได้รับเส้นทางเดียวกันเมื่อส่งผ่าน nginx หรือไม่ กฎการเขียน URL ที่ฉลาดขึ้นมาบ้าง?
21 nginx  rewrite  url 

4
ฉันจะสร้าง nginx support @ รูปแบบฟอนต์ใบหน้าและอนุญาตให้ access-control-allow-origin ได้อย่างไร
ฉันได้เพิ่มกฎเหล่านี้ไปที่mime.types: application/x-font-ttf ttf; font/opentype otf; application/vnd.ms-fontobject eot; font/x-woff woff; ขณะนี้ส่วนหัว Content-Type ได้รับการตั้งค่าอย่างถูกต้องสำหรับแต่ละประเภท ปัญหาเดียวของฉันตอนนี้คือ Firefox ต้องใช้ Access-Control-Allow-Origin ฉัน googled คำตอบนี้และเพิ่มลงในคำสั่งเซิร์ฟเวอร์ของฉัน: location ~* \.(eot|ttf|woff)$ { add_header Access-Control-Allow-Origin *; } แต่ตอนนี้แบบอักษรของฉันไม่ได้ถูกแสดงเลย แทนที่จะเป็นerror.logรายงานที่พยายามเปิดพวกเขาบนระบบไฟล์โลคอลแทน 2010/10/02 22:20:21 [ข้อผิดพลาด] 1641 # 0: * 15 open () "/usr/local/nginx/html/fonts/mgopenmodernabold-webfont.woff" ล้มเหลว (2: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว) ไคลเอนต์: 69.164.216.142, se rver: static.arounds.org คำขอ: "HEAD …

6
ทำไม Nginx ถึงได้รับความนิยมมากกว่า lighttpd
ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ฉันต้องการใช้ Lighttpd ในการผลิตเพื่อให้บริการแอพ Django แต่ฉันเห็นว่าทุกวันนี้ Nginx เป็นที่นิยมมากขึ้นเรื่อย ๆ ทำไมถึงเป็นอย่างนั้น? ฉันทราบว่าในอดีต Lighttpd มีหน่วยความจำรั่ว แต่ตอนนี้ไม่ได้รับการแก้ไขหรือไม่ พวกเขามีนักพัฒนาที่ใช้งานอยู่ที่แก้ไขสิ่งเหล่านี้ใช่ไหม มีเหตุผลใดบ้างที่ฉันควรไปกับ Nginx แทนที่จะเป็น Lighty? ฉันรู้ว่า nginx เป็นเซิร์ฟเวอร์ที่ยอดเยี่ยม แต่จริงๆแล้วมันดีและดีกว่า lighty จริงหรือ
21 nginx  lighttpd  django 

1
บันทึก Nginx ให้กับหลาย ๆ ไฟล์
ฉันต้องการบันทึกรายการ access.log เดียวกันเพื่อแยกไฟล์ดังนั้นเมื่อมีคำขอมาให้ควรเติม a.log และ b.log มีวิธีการทำเช่นนี้กับ nginx หรือไม่?
21 nginx  logging 

3
หมดเวลาการเชื่อมต่อ nginx & ปัญหาการเชื่อมต่อลูกค้าปิด
ฉันมีเซิร์ฟเวอร์ nginx นี้ทำงานบน AWS & มันทำงานได้ดีจนกระทั่งเมื่อไม่นานมานี้เมื่อมีผู้ใช้สองคนเริ่มบ่นเกี่ยวกับเว็บไซต์ที่ไม่เปิดจนกว่าพวกเขาจะพยายามเข้าถึงมัน 10 ครั้ง ฉันไม่สามารถแก้ไขปัญหาได้จากด้านข้างของฉัน ฉันกำลังใช้ DNS ของ google เช่น 8.8.8.8 และเมื่อฉันเปลี่ยนเหมือนกันสำหรับหนึ่งในผู้ใช้ไซต์ทำงานได้ดี ตอนนี้อาจเป็นเหตุผลหรือนี่อาจเป็นเพียงเรื่องบังเอิญ ฉันพบสิ่งนี้ในบันทึกข้อผิดพลาด - 2014/05/29 13:46:15 [info] 6940#0: *150649 client timed out (110: Connection timed out) while waiting for request, client: xx.xxx.xxx.xx, server: 0.0.0.0:80 2014/05/29 13:46:20 [info] 6940#0: *150670 client closed connection while waiting for …

3
NGINX add_header เพิ่มหลายส่วนหัว
ฉันกำลังพยายามส่งหลายหัว add_header Access-Control-Allow-Origin http://dev.anuary.com; add_header Access-Control-Allow-Origin https://dev.anuary.com; อย่างไรก็ตามแทนที่จะเป็น NGINX Access-Control-Allow-Origin: http://dev.anuary.com, https://dev.anuary.com ทางออกคืออะไร?
21 nginx 

3
เหตุใด sub_filter จึงไม่ทำงานเมื่อใช้ร่วมกับ proxy_pass
รับการกำหนดค่าต่อไปนี้ของ nginx: server { listen 80; server_name apilocal; sub_filter "apiupstream/api" "apilocal"; sub_filter_once off; location /people/ { proxy_pass http://apiupstream/api/people/; proxy_set_header Accept-Encoding ""; } } Sub_filter ไม่ตอบสนองส่วนต่าง ๆ ของการตอบสนองอย่างเหมาะสม เมื่อฉันลบ proxy_pass ออกจากการกำหนดค่ามันทำงานได้อย่างถูกต้อง หลายคนที่มีปัญหานี้ท้ายมีการบีบอัด gzip จากเซิร์ฟเวอร์ upstream ฉันตรวจสอบแล้วว่าเซิร์ฟเวอร์อัปสตรีมของฉันไม่ได้เปิดการเข้ารหัส gzip ไว้สำหรับการตอบกลับ แต่ในกรณีที่ฉันใช้ proxy_set_header ด้านบนเพื่อไม่ยอมรับ gzip อาจมีอย่างอื่นที่ฉันหายไป?
21 nginx  proxy 

3
การเข้าสู่ระบบ nginx เพื่อ access.log.1 แทนที่จะเป็น access.log, logrotate ล้มเหลว?
ฉันมีอินสแตนซ์ nginx ที่ตั้งค่าให้เข้าสู่การเข้าถึง /var/log/nginx/access.log และข้อผิดพลาดในการ /var/log/nginx/errors.log แต่ทันทีที่ logrotate ทำงานในแต่ละสัปดาห์ไฟล์จะถูกย้ายไปที่ * .log.1 และไฟล์ * .log ใหม่ถูกสร้างขึ้น แต่ nginx ยังคงเข้าสู่ระบบไฟล์ log.1 แทนไฟล์. log ใหม่ (และไม่มีอะไรได้รับ gzipped) ครั้งแรกที่ฉันสังเกตเห็นว่ามันเป็นเวลา 3 สัปดาห์นับตั้งแต่การหมุนบันทึกและบันทึกเริ่มมีขนาดใหญ่มาก การเรียกใช้kill -HUP `cat /run/nginx.pid`nginx เริ่มต้นการบันทึกลงในตำแหน่งที่ถูกต้องอีกครั้ง แต่ปัญหาเริ่มขึ้นอีกครั้งในสัปดาห์หน้า เหตุผลที่สำคัญกว่านี้น่าผิดหวังคือฉันมีบันทึกที่ตั้งให้อัพโหลดไปยัง Loggly ผ่านทาง rsyslog และเมื่อ nginx หยุดการบันทึกลงในไฟล์ที่ฉันมีการโพล rsyslog แล้วสิ่งต่างๆก็หยุดอัพโหลดและฉันไม่ได้รับการเตือนใด ๆ ฉันสงสัยว่ามีบางอย่างที่เกี่ยวข้องกับการรีสตาร์ท nginx หรือโหลดการกำหนดค่าใหม่เพราะมันไม่ได้เริ่มจนกว่าฉันจะทำการเปลี่ยนแปลงการกำหนดค่าและโหลดการตั้งค่าใหม่ในแบบที่ฉันคิดว่าเป็นเรื่องปกติ ฉันพยายามเรียกใช้kill -USR1 `cat /run/nginx.pid`แต่ไฟล์ยังคงได้รับการบันทึกลงในตำแหน่งที่ไม่ถูกต้องจนกว่าฉันจะรันkill …

3
เปลี่ยนเส้นทางโดเมนย่อยไวด์การ์ดไปยัง https (nginx)
ฉันได้รับการรับรอง wildcard ssl และฉันพยายามเปลี่ยนเส้นทางการรับส่งข้อมูลที่ไม่ใช่ ssl ไปยัง ssl ขณะนี้ฉันกำลังใช้สิ่งต่อไปนี้สำหรับการเปลี่ยนเส้นทาง url ที่ไม่ใช่โดเมนย่อยซึ่งทำงานได้ดี server { listen 80; server_name mydomain.com; #Rewrite all nonssl requests to ssl. rewrite ^ https://$server_name$request_uri? permanent; } เมื่อฉันทำสิ่งเดียวกันกับ * .mydomain.com มันจะเปลี่ยนเส้นทางไปทางตรรกะ https://%2A.mydomain.com/ คุณเปลี่ยนเส้นทางโดเมนย่อยทั้งหมดให้เทียบเท่ากับ https ได้อย่างไร
20 nginx  https 

1
การกำหนดค่า Nginx + WSGI ที่แนะนำ
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Server Fault อพยพ 7 ปีที่ผ่านมา โปรดอธิบายข้อดี / ข้อเสียเมื่อใช้อินเทอร์เฟซ Nginx WSGI อื่น โปรดอธิบายโดยละเอียดว่าอะไรคือความแตกต่างของการกำหนดค่าแต่ละอย่าง การกำหนดค่าใดควรปรับขนาดที่ดีที่สุด หากเกี่ยวข้องคุณกำลังทำงานอะไรอยู่ตอนนี้และเพราะอะไร เทคนิคบางอย่างที่ฉันเคยเห็น แต่โปรดบอกฉันหากฉันพลาด: mod_wsgi uWSGIผ่านNginx uWSGI FastCGI + flup พร็อกซีเซิร์ฟเวอร์ WSGI อื่น ( gevent , gunicorn , tornado , FAPWS3 )

4
nginx + PHP-FPM = ข้อผิดพลาด“ สิทธิ์ถูกปฏิเสธ” 13 ในบันทึก nginx; ข้อผิดพลาดในการกำหนดค่า?
ฉันมี nginx 0.7x + PHP-FPM ทำงานภายใต้ PHP 5.2.10 บนเซิร์ฟเวอร์ RHEL5 หนึ่งตัว แต่พยายามทำซ้ำการตั้งค่านั้นภายใต้ PHP-FPM ที่รวมอยู่ใน PHP 5.3.3 บนเซิร์ฟเวอร์ตัวที่สองฉันมี ปัญหาบางอย่างเกี่ยวกับข้อผิดพลาดการอนุญาตทุกครั้งที่มี GET FPM เริ่มต้นแล้วและยืนยันว่า fastcgi กำลังรับฟัง 9000 แต่ทุกครั้งที่ฉันรับ GET ฉันเห็นข้อผิดพลาดนี้ในบันทึก nginx: 2010/08/12 23:38:53 [crit] 5019#0: *5 stat() "/home/noisepages/www/" failed (13: Permission denied), client: 24.215.173.141, server: dev.noisepages.com, request: "GET / HTTP/1.1", host: "dev.noisepages.com" Barebones …

2
at-sign“ @” หมายถึงอะไรในบล็อกตำแหน่ง nginx
ฉันพบคำถามสองสามข้อและคำตอบที่นี่ที่ใช้ไวยากรณ์นี้: location @default { # ... } location /somewhere { try_files $uri @default; } ฉันได้ค้นหาสูงและต่ำบน Googles และฉันไม่สามารถหาเอกสารใด ๆ ของมัน มันหมายถึงอะไรและมีประโยชน์อะไรบ้าง? มันคือการประกาศตัวแปรและการกำหนดบางอย่าง? ขออภัยสำหรับคำถามที่สมัครใหม่
20 nginx 

1
สำหรับเหตุการณ์ที่เซิร์ฟเวอร์ส่ง (SSE) การกำหนดค่าพร็อกซี Nginx มีความเหมาะสมอย่างไร
ฉันได้อ่านคำถามมากมายเกี่ยวกับการกำหนดค่า Nginx ที่เหมาะสมสำหรับ SSE และเกิดผลลัพธ์ที่สับสนเกี่ยวกับการตั้งค่าที่จะใช้: /programming/17529421/sending-server-sent-events-through-a-socket-in-c /programming/13672743/eventsource-server-sent-events-through-nginx /programming/21630509/server-sent-events-connection-timeout-on-node-js-via-nginx ดังนั้นคำตอบที่ถูกต้องคืออะไร?
20 nginx 

2
ใช้ HTTP / 2.0 ระหว่าง nginx reverse-proxy และเว็บเซิร์ฟเวอร์แบ็กเอนด์
ฉันใช้ nginx เป็น reverse-ssl-proxy หน้าเว็บเซิร์ฟเวอร์ส่วนหลังที่สามารถทำ HTTP / 2.0 ได้ ฉันสังเกตเห็นว่า nginx พร็อกซีร้องขอไปยังเซิร์ฟเวอร์เบื้องหลังผ่าน HTTP / 1.1 มากกว่า HTTP / 2.0 เป็นไปได้ไหมที่จะบอกให้ nginx ใช้การเชื่อมต่อ HTTP / 2.0 ที่ไม่เข้ารหัสแทน? ประสิทธิภาพนี้จะเพิ่มขึ้นหรือไม่

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