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

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

1
การทำความเข้าใจกับคำสั่ง nginx proxy_cache_path
สมมติว่าฉันมีไฟล์ config nginx นี้ proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=myCache:8m max_size=100m inactive=1h; อะไรkeys_zone=myCache:8mหมายถึง? มีไม่มากที่พูดถึงในเอกสาร: นอกจากนี้คีย์ที่ใช้งานและข้อมูลเกี่ยวกับข้อมูลทั้งหมดจะถูกเก็บไว้ในโซนหน่วยความจำที่ใช้ร่วมกันซึ่งมีชื่อและขนาดที่กำหนดค่าโดยพารามิเตอร์ keys_zone เกิดอะไรขึ้นถ้าproxy_cache_valid( 12h) สูงกว่าที่ระบุinactiveค่า ( 1h) ในproxy_cache_path? กฎใดที่จะเป็นไปตาม เช่น proxy_cache_valid 200 302 12h; proxy_cache_valid 404 302 1h; ขอบคุณ!

1
ชื่อและตำแหน่งของไฟล์กำหนดค่า Nginx (เทียบเท่ากับ htaccess) คืออะไร
มีบทเรียนมากมายเกี่ยวกับวิธีเขียนกฎการเขียน Nginx ใหม่เพื่อเลียนแบบไฟล์. htaccess ของ Apache แต่ฉันไม่สามารถพูดได้อย่างมั่นใจว่าฉันรู้ว่าชื่อหรือที่ตั้งของไฟล์กำหนดค่า Nginx นี้เรียกว่าอะไร ฉันกำลังมองหาไฟล์กำหนดค่า Nginx ที่อนุญาตให้คุณเขียนเส้นทางเซิร์ฟเวอร์และคำสั่ง PHP โดยเฉพาะ ฉันใช้ Ubuntu 12 linux และ Codeigniter เป็นกรอบงาน PHP ของฉัน นี่คือสิ่งที่ฉันรู้: ไฟล์นี้: /etc/nginx/nginx.confแม้จะมีชื่อที่น่าดึงดูด แต่ก็ไม่ใช่สถานที่สำหรับคำสั่งของเซิร์ฟเวอร์ ไฟล์นี้: /etc/nginx/sites-available/defaultดูเหมือนว่าสิ่งที่ฉันต้องการ (ฉันสามารถสร้างข้อผิดพลาด php เฉพาะแอปของฉัน) แต่ฉันไม่สามารถรับเส้นทางที่เฉพาะเจาะจง Codeigniter ได้ ก่อนอื่นนี่คือไฟล์ "config" / .htaccess ที่ทุกคนพูดถึงหรือไม่

2
HTTP reverse proxies โดยทั่วไปจะเปิดใช้งาน HTTP Keep-Alive ที่ฝั่งไคลเอ็นต์ของการเชื่อมต่อ proxied ไม่ใช่ในฝั่งเซิร์ฟเวอร์หรือไม่?
HAProxy มีความสามารถในการเปิดใช้งาน HTTP keep-alive บนฝั่งไคลเอ็นต์ (ไคลเอนต์ <-> HAProxy) แต่ปิดการใช้งานบนฝั่งเซิร์ฟเวอร์ (เซิร์ฟเวอร์ HAProxy <->) ลูกค้าของเราบางคนเชื่อมต่อกับบริการเว็บของเราผ่านดาวเทียมดังนั้นเวลาในการตอบสนองคือ ~ 600ms และฉันคิดว่าการเปิดใช้งาน Keep-Alive จะช่วยเพิ่มความเร็วให้กับสิ่งต่างๆ ฉันถูกไหม? Nginx รองรับสิ่งนี้หรือไม่? นี่เป็นคุณสมบัติที่นำไปใช้อย่างกว้างขวางในตัวโหลดบาลานซ์ซอฟต์แวร์และฮาร์ดแวร์อื่น ๆ มีอะไรนอกเหนือจาก HAProxy

2
Nginx: ตำแหน่ง regex สำหรับหลายเส้นทาง
ฉันมีสองสถานที่ในการกำหนดค่า nginx ที่ทำงาน: location ^~ /media/ { proxy_pass http://backend.example.com; } location ^~ /static/ { proxy_pass http://backend.example.com; } ฉันจะรวมสองสิ่งนี้เข้าด้วยกันในที่เดียวได้อย่างไร สิ่งที่ฉันทำไปแล้ว: ฉันลองคำแนะนำนี้ location ~ ^/(static|media)/ { proxy_pass http://backend.example.com; } แต่มันไม่ได้ผลสำหรับฉัน นอกจากนี้เมื่อฉันไม่ได้ใช้แบ็กเอนด์การกำหนดค่าต่อไปนี้ทำงานอย่างถูกต้อง: location ~ ^/(static|media)/ { root /home/project_root; } ปรับปรุง (บางสายจากบันทึก) xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /content/11160/ HTTP/1.1" 200 5310 "-" "Mozilla/5.0 …
30 nginx  regex 

3
พร็อกซี HTTPS ร้องขอไปยัง HTTP backend ด้วย NGINX
ฉันได้กำหนดค่า nginx ให้เป็นเว็บเซิร์ฟเวอร์ที่มองเห็นจากภายนอกซึ่งพูดถึงแบ็กเอนด์ผ่าน HTTP สถานการณ์ที่ฉันต้องการบรรลุคือ: ไคลเอนต์ทำการร้องขอ HTTP ไปยัง nginx ซึ่งเปลี่ยนเส้นทางไปยัง URL เดียวกัน แต่ใช้ผ่าน HTTPS พร็อกซี nginx ร้องขอผ่าน HTTP ไปยังส่วนหลัง nginx รับการตอบสนองจากแบ็กเอนด์ผ่าน HTTP nginx ส่งผ่านสิ่งนี้กลับไปยังลูกค้าผ่าน HTTPS การกำหนดค่าปัจจุบันของฉัน (ที่แบ็คเอนด์ถูกกำหนดค่าอย่างถูกต้อง) คือ: เซิร์ฟเวอร์ { ฟัง 80; server_name localhost; ตำแหน่ง ~. * { proxy_pass http: // backend; proxy_redirect http: // backend https: // $ host; …

1
วิธีปิดการใช้งาน http พื้นฐาน auth ใน nginx สำหรับช่วง ip ที่เฉพาะเจาะจง
ฉันกำลังพัฒนาแอปพลิเคชันด้วยการเข้าสู่ระบบ Facebook จนถึงตอนนี้ยังไม่เปิดเผยต่อสาธารณะและได้รับการปกป้องด้วย http auth พื้นฐานใน nginx เป็นไปได้หรือไม่ที่จะปิดการใช้งาน http auth สำหรับช่วง ip ของ facebook เพื่อให้เราสามารถทดสอบผู้ทดสอบของเราได้เช่นกัน? กรุณารวมตัวอย่างข้อมูลการกำหนดค่าถ้าเป็นไปได้

8
Nginx + php-fpm ข้อผิดพลาด“ 504 เกตเวย์หมดเวลา” ข้อผิดพลาดที่มีภาระเกือบเป็นศูนย์ (บนเซิร์ฟเวอร์ทดสอบ)
หลังจากดีบั๊กเป็นเวลา 6 ชั่วโมง - ฉันยอมแพ้: | เรามี nginx + php-fpm + mysql ในระบบ LAN ด้วยเกือบ 100 wordpress (สร้างและใช้โดยนักออกแบบ / นักพัฒนาที่แตกต่างกันทั้งหมดที่ทำงานในการตั้งค่า wordpres ทดสอบ) เราใช้ nginx โดยไม่มีปัญหาใด ๆ จากความยาว วันนี้ทุกอย่างฉับพลัน - nginx เริ่มกลับมา "504 Gateway Time-out" จากสีน้ำเงิน ... ฉันตรวจสอบบันทึกข้อผิดพลาด nginx สำหรับโฮสต์เสมือน ... 2010/09/06 21:24:24 [error] 12909#0: *349 upstream timed out (110: Connection …

3
Apache vs Nginx
ฉันได้ตรวจสอบความแตกต่างระหว่าง Apache และ Nginx เมื่อเร็ว ๆ นี้และสับสนเกี่ยวกับสิ่งที่ฉันควรเลือก ฉันทำการค้นหาบางอย่างแล้ว แต่ไม่มีการเปรียบเทียบที่ชัดเจนระหว่างทั้งสองและฉันสงสัยว่าใครบางคนที่นี่สามารถให้มุมมองเกี่ยวกับความแตกต่างระหว่างทั้งสอง ความรู้ในปัจจุบันของฉันทำให้ฉันเข้าใจว่า mod_php นั้นเร็วกว่าและปลอดภัยกว่า fastcgi อย่างไรก็ตาม Apache นั้นแย่กว่ามากเมื่อมันมาถึงการเชื่อมต่อและการใช้หน่วยความจำพร้อมกัน เว็บไซต์ของฉันใช้โพลจำนวนมาก แต่มีเว็บที่ไม่ใช่ AJAX (เช่น Apache ที่มีโพลแบบยาวอยู่ด้านบน) โซลูชันดั้งเดิมของฉันสำหรับปัญหาหน่วยความจำของ Apaches คือการส่งการสำรวจแบบยาวผ่าน node.js จากนั้นรับ node.js เพื่อเข้าถึง Apache ทุก 2 วินาทีในกรณีนี้ Apache จะไม่มีการเชื่อมต่อที่เปิดอยู่ แต่แทนที่จะเป็น node.js ฉันได้ตระหนักว่านี่อาจไม่ดีพอและกำลังมองหาวิธีแก้ไขปัญหาที่แตกต่างกัน ฉันยังคงสนใจว่าแนวคิดดั้งเดิมของฉันจะใช้ได้หรือไม่ แล้วเว็บไหนดีกว่ากัน? Apache หรือ Nginx อัปเดต: คำแนะนำทั้งหมดที่ให้ไว้นั้นดีและถูกต้อง ฉันได้ไปกับแนวคิดที่สองดั้งเดิมซึ่งใช้เซิร์ฟเวอร์ Nginx แบบเต็ม ฉันพอใจที่เป็นเซิร์ฟเวอร์เฉพาะฉันไม่สามารถประสบปัญหาด้านความปลอดภัยจาก fastcgi …

2
การทำโหลดบาลานซ์อัตโนมัติให้โดยอัตโนมัติ
ฉันใช้ nginx และ NginxHttpUpstreamModule สำหรับการทำโหลดบาลานซ์ การกำหนดค่าของฉันง่ายมาก: upstream lb { server 127.0.0.1:8081; server 127.0.0.1:8082; } server { listen 89; server_name localhost; location / { proxy_pass http://lb; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } แต่ด้วยการกำหนดค่านี้เมื่อเซิร์ฟเวอร์แบ็คเอนด์หนึ่งใน 2 หยุดทำงาน nginx ยังคงจัดเส้นทางการร้องขอไปและจะส่งผลให้หมดเวลาครึ่งหนึ่งของเวลา :( มีวิธีใดที่จะทำให้ nginx กำหนดเส้นทางการร้องขอไปยังเซิร์ฟเวอร์อื่นโดยอัตโนมัติเมื่อตรวจพบเซิร์ฟเวอร์ที่ดาวน์สตรีม ขอขอบคุณ.

8
เซิร์ฟเวอร์ของฉันยังคงมีความเสี่ยงต่อการถูกรบกวนแม้หลังจากอัปเดต OpenSSL แล้ว
ฉันมีเซิร์ฟเวอร์ Ubuntu 12.04 ฉันได้อัปเดตOpenSSLแพคเกจเพื่อแก้ไขช่องโหว่ที่รุนแรง แต่ฉันยังคงมีช่องโหว่แม้ว่าฉันจะรีสตาร์ทเว็บเซิร์ฟเวอร์และแม้กระทั่งเซิร์ฟเวอร์ทั้งหมด เพื่อตรวจสอบช่องโหว่ของฉันฉันใช้: http://www.exploit-db.com/exploits/32745/ http://filippo.io/Heartbleed dpkg ให้: dpkg -l |grep openssl ii openssl 1.0.1-4ubuntu5.12 Secure Socket Layer (SSL) binary and related cryptographic tools (launchpad.net/ubuntu/+source/openssl/1.0.1-4ubuntu5.12)

5
ต้องการเพิ่มปริมาณงาน nginx ให้กับซ็อกเก็ตยูนิกซ์อัปสตรีม - การปรับแต่งเคอร์เนลลินุกซ์หรือไม่?
ฉันกำลังเรียกใช้เซิร์ฟเวอร์ nginx ที่ทำหน้าที่เป็นพร็อกซีไปยังซ็อกเก็ตอัพสตรีมยูนิกซ์เช่นนี้ upstream app_server { server unix:/tmp/app.sock fail_timeout=0; } server { listen ###.###.###.###; server_name whatever.server; root /web/root; try_files $uri @app; location @app { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://app_server; } } เซิร์ฟเวอร์แอปบางตัวจะดึงคำขอออก/tmp/app.sockเมื่อพร้อมใช้งาน เซิร์ฟเวอร์แอปที่ใช้งานเฉพาะที่นี่คือยูนิคอร์น แต่ฉันไม่คิดว่าเกี่ยวข้องกับคำถามนี้ ปัญหาคือดูเหมือนว่าผ่านการโหลดจำนวนหนึ่ง nginx ไม่สามารถรับการร้องขอผ่านซ็อกเก็ตในอัตราที่เร็วพอ ไม่ว่าฉันจะติดตั้งแอปเซิร์ฟเวอร์จำนวนเท่าใด ฉันได้รับข้อความเหล่านี้จำนวนมากในบันทึกข้อผิดพลาด nginx: connect() to …

1
NGINX - ร้องขอให้เร่งเร้าเพื่อป้องกันการละเมิด
เหตุผลที่ฉันต้องการทำเช่นนี้เป็นเพราะผู้ใช้พัฒนากับ API ของเราด้วย JavaScript และนักพัฒนาบางคนสับสนและทำให้ผู้เข้าชมสแลมเซิร์ฟเวอร์ด้วยคำขอ AJAX เมื่อสิ่งนี้เกิดขึ้นฉันต้องการที่จะสามารถเร่งการร้องขอ API เพื่อ50 คำขอต่อนาทีหรือสิ่งที่ผลกระทบที่ หมายเหตุ: (โดยเฉพาะอย่างยิ่งฐานข้อมูลเข้มข้น DB ดังนั้นอาจอยู่ในระดับพา ธ มากกว่าเซิร์ฟเวอร์ (เช่น throttle "/ json_api /" แต่ไม่ใช่ "/ static /")

4
เปลี่ยนเส้นทางคำขอ HTTP ทั้งหมดที่อยู่เบื้องหลัง Amazon ELB เป็น https โดยไม่ต้องใช้หาก
ขณะนี้ฉันมี ELB ให้บริการทั้งhttp://www.example.orgและhttps://www.example.org ผมอยากจะตั้งขึ้นเพื่อชี้คำขอใด ๆ ที่จะhttp://www.example.orgคือการเปลี่ยนเส้นทางไปhttps://www.example.org ELB ส่งคำขอ https เป็นคำขอ http ดังนั้นการใช้: server { listen 80; server_name www.example.org; rewrite ^ https://$server_name$request_uri? permanent; } จะไม่ทำงานเนื่องจากคำขอที่ส่งไปยังhttps://www.example.orgจะยังคงถูกส่งไปยังพอร์ต 80 บน nginx ฉันรู้ว่าเป็นไปได้ที่จะเขียนใหม่เป็น server { listen 80; server_name www.example.org; if ($http_x_forwarded_proto != "https") { rewrite ^(.*)$ https://$server_name$1 permanent; } } แต่ทุกสิ่งที่ฉันได้อ่านบอกว่าifควรหลีกเลี่ยงค่าใช้จ่ายทั้งหมดภายในการกำหนดค่า nginx และนี่จะเป็นสำหรับทุกคำขอเดียว นอกจากนี้ยังหมายความว่าฉันต้องตั้งค่าการแยกต่างหากเป็นพิเศษสำหรับการตรวจสุขภาพ ( …

1
ต้องโหลด PHP-FPM ใหม่ตลอดเวลา
เรามีเซิร์ฟเวอร์ที่โหลดค่อนข้างมากซึ่งใช้งาน nginx และ PHP-FPM เรามี 6 เว็บไซต์บนเซิร์ฟเวอร์นี้ใช้งาน PHP-FPM และ nginx ซอฟต์แวร์เป็น vBulletin 3.8 และ WordPress ทั้งหมด ฐานข้อมูลอยู่บนเซิร์ฟเวอร์ที่แยกต่างหาก ขณะนี้เนื่องจากเว็บไซต์เหล่านี้เป็นเว็บไซต์ที่ได้รับความนิยมอย่างสูงเราจึงมีผู้เยี่ยมชมเว็บไซต์ครั้งละ 7-8,000 คนโดยแต่ละหน้ามีการเข้าใช้ฐานข้อมูลเป็นส่วนใหญ่ ฉันเชื่อว่านี่เป็นสาเหตุของปัญหาของเรา เนื่องจากเรามีฐานข้อมูลขนาดใหญ่จำนวนมากบนเซิร์ฟเวอร์ MySQL และเนื่องจากข้อสงสัยสามารถทำได้ดีกว่ามากในซอฟต์แวร์ฉันคิดว่า MySQL อาจล้มเหลวในการส่งคืนผลลัพธ์เป็น PHP ในเวลาที่เหมาะสมสร้างผลกระทบที่ตามมาในที่สุด ทำให้ทุกอย่างหยุดลงจนกว่าเราจะโหลด PHP-FPM ใหม่ หลังจากที่เราทำสิ่งต่าง ๆ เริ่มทำงานได้ดีอีกครั้ง เหตุผลที่ฉันมีปัญหาในการแก้ไขปัญหานี้เป็นเพราะฉันไม่สามารถแยกแยะอะไรจากบันทึก ในบันทึกการสืบค้น MySQL ที่ช้าฉันไม่เห็นสิ่งใดที่น่าสนใจเมื่อเกิดการหยุดทำงาน ในบันทึก nginx ฉันเห็นรายการนับพันที่บอกว่าคำขอการอ่านหมดเวลาหรือการเชื่อมต่อหมดเวลา (ไปที่ PHP-FPM) และในบันทึกของ PHP-FPM ฉันเห็นหลายบรรทัดที่ระบุว่า "การดำเนินการหมดเวลา (31 วินาที) การยกเลิก …
27 mysql  nginx  php-fpm 

2
Nginx: บังคับให้ SSL บนเส้นทางเดียวไม่ใช่ SSL กับผู้อื่น
ฉันจะตั้งค่าไฟล์ Nginx conf ให้บังคับ SSL บนเส้นทางเดียวในเว็บไซต์ของฉันและไม่ใช่ SSL ในส่วนที่เหลือทั้งหมดได้อย่างไร ตัวอย่างเช่นฉันต้องการให้ URL ทั้งหมดภายใต้ / user เป็น https แต่ URL ที่เหลือทั้งหมดจะเป็น http สำหรับส่วนแรกฉันมี: rewrite ^/user(.*) https://$http_host$request_uri?; ฉันไม่ต้องการใช้ "ถ้า" ฉันคิดว่ามันจะใช้ประโยชน์จากลำดับการดำเนินการ แต่ฉันไม่ต้องการที่จะจบลงด้วยการวนซ้ำ
27 nginx  ssl 

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