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

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

4
Nginx - รูทกับชื่อแทนสำหรับใช้งานไฟล์เดียว?
หลังจากผ่านไปหลายชั่วโมงnginxเพื่อให้บริการไฟล์เดียวเช่นrobots.txt(คำใบ้: ล้างแคชเบราว์เซอร์ของคุณในแต่ละครั้ง) ฉันปิดบังด้วยสองวิธีที่ต่างกันวิธีหนึ่งใช้คำสั่งนามแฝงและอีกวิธีหนึ่งโดยใช้คำสั่งรูทเช่น: location /robots.txt { alias /home/www/static/robots.txt; } location /robots.txt { root /home/www/static/; } มีความแตกต่างในการทำงานระหว่างสองหรือไม่ หรือปัญหาด้านความปลอดภัย? มีข้อขัดแย้งใด ๆ กับคำสั่งอื่น ๆ ? (ทั้งคู่ดูเหมือนจะดีกับตำแหน่งอื่น / คงที่) หรือเหตุผลใดที่จะเลือกอย่างใดอย่างหนึ่งมากกว่าอื่น ๆ ? หมายเหตุ - ฉันไม่ได้ใช้ทั้งสองอย่างพร้อมกัน :) ฉันลองแต่ละครั้งทีละอันและใช้ได้ทั้งคู่ ฉันไม่ได้ถามว่าพวกเขาทั้งสองมีปฏิสัมพันธ์กันในไฟล์เดียวกันอย่างไร แต่จะใช้อันไหนดีกว่า
66 nginx 

4
Nginx: ฉันจะส่งต่อคำร้องขอ http ไปยังพอร์ตอื่นได้อย่างไร
สิ่งที่ฉันต้องการจะทำคือ เมื่อมีคนเยี่ยมชมhttp://localhost/route/abcเซิร์ฟเวอร์ตอบสนองเหมือนกันทุกประการhttp://localhost:9000/abc ตอนนี้ฉันกำหนดค่า Nginx ของฉันเช่นนี้: location /route { proxy_pass http://127.0.0.1:9000; } http การร้องขอถูกส่งพอร์ต9000อย่างถูกต้อง แต่เส้นทางที่ได้รับคือไม่ได้http://localhost:9000/route/abchttp://localhost:9000/abc ข้อเสนอแนะใด ๆ
65 nginx 

2
ทำไมฉันต้องมี nginx เมื่อฉันมี uWSGI
มีแบบฝึกหัดมากมายเกี่ยวกับวิธีกำหนดค่า nginx ให้ร่วมมือกับ uWGSI เมื่อฉันต้องการปรับใช้แอปพลิเคชัน Django แต่ทำไมฉันต้องใช้ nginx ในชุดนี้ uWSGI ตัวเองสามารถให้บริการแอพพลิเคชั่น WSGI Python มันสามารถให้บริการไฟล์คงที่มันยังสามารถทำ SSL nginx สามารถทำอะไรได้ซึ่ง uWSGI ไม่สามารถทำได้
62 nginx  django  uwsgi 

2
การตอบกลับอัปสตรีมจะถูกบัฟเฟอร์ในไฟล์ชั่วคราว
ฉันมี (ข้อมูลที่ซับซ้อนที่ซับซ้อนส่วนหน้า) ค่อนข้างใหญ่และช้าโปรแกรมประยุกต์บนเว็บในการสร้างRoRและให้บริการโดยPumaมีnginxพร็อกซี่เป็นแบบย้อนกลับ เมื่อดูที่nginxบันทึกข้อผิดพลาดฉันเห็นรายการบางอย่างเช่น: 2014/04/08 09:46:08 [warn] 20058#0: *819237 an upstream response is buffered to a temporary file /var/lib/nginx/proxy/8/47/0000038478 while reading upstream, client: 5.144.169.242, server: engagement-console.foo.it, request: "GET /elements/pending?customer_id=2&page=2 HTTP/1.0", upstream: "http://unix:///home/deployer/apps/conversationflow/shared/sockets/puma.sock:/elements/pending?customer_id=2&page=2", host: "ec.reputationmonitor.it", referrer: "http://ec.foo.it/elements/pending?customer_id=2&page=3" ฉันค่อนข้างอยากรู้อยากเห็นเนื่องจากไม่น่าเป็นไปได้มากที่หน้าเว็บจะยังคงเหมือนเดิมสำหรับผู้ใช้ที่แตกต่างกันและการโต้ตอบของผู้ใช้ที่แตกต่างกันและฉันจะไม่คิดว่าการบัฟเฟอร์การตอบสนองบนดิสก์เป็นสิ่งจำเป็น / มีประโยชน์ ฉันรู้proxy_max_temp_file_sizeและตั้งค่าเป็น 0 แต่ดูเหมือนว่าฉันจะอึดอัดเล็กน้อย (พร็อกซีของฉันพยายามที่จะบัฟเฟอร์ แต่ไม่มีไฟล์ที่จะบัฟเฟอร์ไปที่ ... วิธีที่จะเร็วขึ้น?) คำถามของฉันคือ: ฉันจะลบ [เตือน] และหลีกเลี่ยงการตอบกลับบัฟเฟอร์ได้อย่างไร …

1
ตำแหน่งที่ซ้อนกัน nginx
ฉันมีปัญหาในการทำความเข้าใจตำแหน่งที่ซ้อนกันใน nginx ฉันมีสองสถานที่ที่มีคำสั่งกำหนดค่าเหมือนกันดังนั้นแทนที่จะทำซ้ำคำสั่งฉันต้องการทำซ้ำ URI โดยใช้นิพจน์ปกติ: location ~ /a|/b { location /a { } location /b { } } อย่างไรก็ตามสิ่งนี้ทำให้เกิดข้อผิดพลาด nginx: [emerg] location "/a" is outside location "/a|/b" in /etc/nginx/nginx.conf:36 ไม่มีหรือ|ดูเหมือนว่าโอเค location ~ /a { location /a { } } ผมทำอะไรผิดหรือเปล่า? มีวิธีที่ดีกว่าในการทำเช่นนี้โดยไม่ทำซ้ำอะไรเลย? ฉันสามารถจัดกลุ่มสถานที่ด้วยวิธีอื่นได้หรือไม่?
60 nginx 

3
nginx real_ip_header และ X-Forwarded- สำหรับดูเหมือนว่าผิด
คำอธิบายวิกิพีเดียของส่วนหัว HTTP X-Forwarded-Forคือ: X-Forwarded- สำหรับ: client1, proxy1, proxy2, ... เอกสารประกอบ nginx สำหรับคำสั่งการreal_ip_headerอ่านส่วนหนึ่ง: คำสั่งนี้ตั้งชื่อของส่วนหัวที่ใช้สำหรับการถ่ายโอนที่อยู่ IP ทดแทน ในกรณีของ X-Forwarded-For โมดูลนี้ใช้IP สุดท้ายในส่วนหัว X-Forwarded-For เพื่อทดแทน [เน้นเหมือง] คำอธิบายทั้งสองนี้ดูขัดแย้งกัน ในสถานการณ์สมมติของเราX-Forwarded-Forส่วนหัวเป็นไปตามที่อธิบายไว้ - ที่อยู่ IP "ของจริง" ของลูกค้าเป็นรายการทางซ้ายสุด ในทำนองเดียวกันพฤติกรรมของ nginx คือการใช้ค่าขวาสุด - ซึ่งแน่นอนว่าเป็นเพียงหนึ่งในพร็อกซีเซิร์ฟเวอร์ของเรา ความเข้าใจของฉันX-Real-IPคือมันควรจะใช้เพื่อกำหนดที่อยู่ IP ของลูกค้าที่แท้จริง - ไม่ใช่พร็อกซี ฉันขาดอะไรไปหรือว่าเป็นบั๊กใน nginx และนอกเหนือจากนั้นไม่มีใครมีคำแนะนำสำหรับวิธีการทำให้X-Real-IPส่วนหัวแสดงค่าซ้ายสุดตามที่ระบุโดยคำจำกัดความของX-Forwarded-For?

7
ลบ“ www” และเปลี่ยนเส้นทางไปที่“ https” ด้วย nginx
ฉันต้องการสร้างกฎใน nginx ที่ทำสองสิ่ง: ลบ "www." จาก URI คำขอ เปลี่ยนเส้นทางไปที่ "https" หาก URI คำขอคือ "http" มีตัวอย่างมากมายเกี่ยวกับวิธีการทำสิ่งเหล่านั้นทีละอย่าง แต่ฉันไม่สามารถหาวิธีแก้ปัญหาที่ทำได้อย่างถูกต้อง (เช่นไม่สร้างลูปการเปลี่ยนเส้นทางและจัดการทุกกรณีอย่างเหมาะสม) จำเป็นต้องจัดการกับกรณีเหล่านี้ทั้งหมด: 1. http://www.example.com/path 2. https://www.example.com/path 3. http://example.com/path 4. https://example.com/path สิ่งเหล่านี้ควรจบที่https://example.com/path (# 4) โดยไม่ต้องวนซ้ำ ความคิดใด ๆ
57 nginx  ssl  https  rewrite 

1
อะไรคือความแตกต่างระหว่าง "การฉีดยา" และ "คงที่" สาขาของ nginx?
ดูเหมือนจะมีสองสาขาที่ใช้งานอยู่ของเว็บเซิร์ฟเวอร์ nginx: สาขา“ mainline” (ปัจจุบัน 1.9.x) และสาขา“ เสถียร” (ปัจจุบัน 1.8.x) ทุกคนสามารถให้แหล่งข้อมูลอย่างเป็นทางการที่อธิบายความแตกต่างระหว่างสองสาขานี้และวิธีการเลือกระหว่างสาขาเหล่านี้ได้หรือไม่
54 nginx 

3
“ 413 คำขอเอนทิตีใหญ่เกินไป” ใน Nginx โดยตั้งค่า“ client_max_body_size”
ฉันกำลังอัพโหลดไฟล์ 26Gb แต่ฉันได้รับ: 413 Request Entity Too Large ฉันรู้ว่านี้จะเกี่ยวข้องกับดังนั้นฉันมีชุดพารามิเตอร์นี้เพื่อclient_max_body_size30000M location /supercap { root /media/ss/synology_office/server_Seq-Cap/; index index.html; proxy_pass http://api/supercap; } location /supercap/pipe { client_max_body_size 30000M; client_body_buffer_size 200000k; proxy_pass http://api/supercap/pipe; client_body_temp_path /media/ss/synology_office/server_Seq-Cap/tmp_nginx; } แต่ฉันยังคงได้รับข้อผิดพลาดนี้เมื่ออัปโหลดไฟล์ทั้งหมดแล้ว
54 nginx 


5
วิธีการบังคับให้ nginx แก้ไข DNS (ของชื่อโฮสต์แบบไดนามิก) ทุกครั้งเมื่อทำ proxy_pass
ฉันใช้ nginx / 0.7.68 ทำงานบน CentOS ด้วยการกำหนดค่าต่อไปนี้: server { listen 80; server_name ***; index index.html index.htm index.php default.html default.htm default.php; location / { root /***; proxy_pass http://***:8888; index index.html index.htm; } # where *** is my variables นี่proxy_passคือระเบียน DNS ที่มีการเปลี่ยนแปลง IP บ่อยครั้ง Nginx แคชที่อยู่ IP ที่ล้าสมัยส่งผลให้เกิดการร้องขอไปยังที่อยู่ IP ที่ไม่ถูกต้อง ฉันจะหยุด nginx …
52 linux  nginx 

4
Nginx เปลี่ยนเส้นทางหนึ่งเส้นทางไปยังเส้นทางอื่น
ฉันแน่ใจว่าสิ่งนี้ถูกถามมาก่อน แต่ฉันไม่สามารถหาวิธีแก้ปัญหาที่ใช้งานได้ เว็บไซต์เปลี่ยนบริการ CMS แต่มีโดเมนเดียวกันฉันจะตั้งค่าการเขียนซ้ำ nginx สำหรับหน้าเดียวได้อย่างไร เช่น หน้าเก่า http://sitedomain.co.uk/content/unique-page-name หน้าใหม่ http://sitedomain.co.uk/new-name/unique-page-name โปรดทราบว่าฉันไม่ต้องการให้ทุกสิ่งในหน้าเนื้อหาถูกเปลี่ยนเส้นทาง แต่แท้จริงแล้วเพียงแค่ URL ที่กล่าวถึงข้างต้น ฉันมีการเปลี่ยนเส้นทางประมาณ 9 รายการซึ่งไม่ใช่รูปแบบที่เหมาะสม ขอบคุณ! แก้ไข: ฉันพบโซลูชันนี้ซึ่งดูเหมือนว่าจะใช้งานได้ยกเว้นความจริงที่ว่ามันเปลี่ยนเส้นทางโดยไม่มีเครื่องหมายทับ: if ( $request_filename ~ content/unique-page-name/ ) { rewrite ^ http://sitedomain.co.uk/new-name/unique-page-name/? permanent; } แต่นี่เป็นการเปลี่ยนเส้นทางไปที่: http://sitedomain.co.uknew-name/unique-page-name/
51 nginx  rewrite 

3
ตัวเลือก PHP 'cgi.fix_pathinfo' อันตรายจริง ๆ กับ Nginx + PHP-FPM หรือไม่
มีการจำนวนมากของการพูดคุยเกี่ยวกับปัญหาด้านความปลอดภัยเมื่อเทียบกับตัวเลือก PHP ใช้กับ Nginx (ปกติ PHP-FPM, CGI เร็ว) cgi.fix_pathinfo ดังนั้นไฟล์กำหนดค่า nginx เริ่มต้นที่ใช้ในการพูด: # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini อย่างไรก็ตามตอนนี้วิกิ Nginx "เป็นทางการ" ระบุว่า PATH_INFO สามารถจัดการได้อย่างถูกต้องโดยไม่ปิดใช้งานตัวเลือก PHP ด้านบน แล้วอะไรล่ะ คำถาม คุณช่วยอธิบายได้อย่างชัดเจนว่าcgi.fix_pathinfoทำอะไร? ( doc อย่างเป็นทางการเพิ่งพูดว่า : "สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ PATH_INFO ดูรายละเอียด CGI") PHP จะทำอะไรกับตัวแปรPATH_INFOและสิ่งเหล่านี้SCRIPT_FILENAME? ทำไมและอย่างไรจึงจะเป็นอันตรายกับ Nginx ( ตัวอย่างโดยละเอียด ) ปัญหายังคงมีอยู่ในโปรแกรมเหล่านี้รุ่นล่าสุดหรือไม่? Apache …

5
การสั่งซื้อ: 1. nginx 2. วานิช 3. haproxy 4. เว็บเซิร์ฟเวอร์?
ฉันเคยเห็นผู้คนแนะนำให้รวมสิ่งเหล่านี้ทั้งหมดเข้าด้วยกัน แต่ดูเหมือนว่าพวกเขาจะมีคุณสมบัติที่ทับซ้อนกันมากมายดังนั้นฉันจึงต้องการที่จะขุดลึกลงไปว่าทำไมคุณถึงต้องการผ่าน 3 โปรแกรมที่แตกต่างกัน Nginx: ssl: ใช่ บีบอัด: ใช่ แคช: ใช่ แบ็กเอนด์พูล: ใช่ เคลือบเงา: ssl: ไม่ (stunnel) บีบอัด: แคช: ใช่ (คุณสมบัติหลัก) แบ็กเอนด์พูล: ใช่ haproxy: ssl: ไม่ (stunnel) บีบอัด: แคช: ไม่ พูลแบ็กเอนด์: ใช่ (คุณสมบัติหลัก) ความตั้งใจที่จะผูกมัดสิ่งเหล่านี้ต่อหน้าเว็บเซิร์ฟเวอร์หลักของคุณเพียงเพื่อให้ได้ประโยชน์จากคุณสมบัติหลักของพวกเขาหรือไม่? ดูเหมือนว่าค่อนข้างบอบบางที่มี daemons จำนวนมากร่วมกันทำสิ่งที่คล้ายกัน การปรับใช้และการกำหนดลักษณะการสั่งซื้อของคุณคืออะไรและเพราะอะไร
50 nginx  web  haproxy  varnish 

2
nginx - เนื้อความคำขอของลูกค้าถูกบัฟเฟอร์ไปยังไฟล์ชั่วคราว
ฉันได้รับข้อผิดพลาดต่อไปนี้ในไฟล์บันทึกของฉันทุกครั้งที่ฉันพยายามอัปโหลดไฟล์ขนาดใหญ่ a client request body is buffered to a temporary file /var/lib/nginx/body/0000000001 แม้ว่าการอัปโหลดไฟล์จะสำเร็จ แต่ฉันได้รับข้อผิดพลาดด้านบนเสมอ ฉันเพิ่มขึ้นclient_body_buffer_sizeไป1000mซึ่งเป็นสิ่งที่ผมคาดว่าไฟล์ที่ใหญ่ที่สุดที่จะอัปโหลด อย่างไรก็ตามนี่เป็นเพียงการคาดเดาและแม้ว่าฉันจะไม่ได้รับข้อผิดพลาดนั้นอีกต่อไปฉันสงสัยว่านี่เป็นค่าที่เหมาะสมสำหรับการตั้งค่าclient_body_buffer_sizeหรือไม่ ฉันจะขอบคุณถ้าใครสามารถทำให้กระจ่างในคำสั่งนี้และวิธีการใช้
48 nginx 

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