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

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

6
จะอัพเกรดซอฟต์แวร์ที่ติดตั้งจากแหล่งที่มาได้อย่างไร
ฉันติดตั้ง NGinx จากต้นทางตั้งแต่แพ็คเกจจากที่เก็บ ubuntu นั้นค่อนข้างเก่า ฉันสงสัยว่าวิธีใดดีที่สุดในการอัปเกรดการติดตั้งประเภทนี้ เวิร์กโฟลว์ปัจจุบันของฉันเกี่ยวข้องกับ กำลังดาวน์โหลดแหล่งที่มาใหม่ ติดตั้งซอฟต์แวร์ด้วยพา ธ เดียวกัน รีสตาร์ทซอฟต์แวร์ มีบางอย่างบอกฉันว่านี่ไม่ใช่เส้นทางที่ดีที่สุด ข้อเสนอแนะ?
10 nginx  update  source 

2
NGINX SSL ไม่ตอบสนองผ่าน IPv6
บนเซิร์ฟเวอร์ Debian ที่มี nginx ฉันไม่ได้รับการตอบกลับจากเว็บเซิร์ฟเวอร์ผ่าน HTTPS และ IPv6 HTTP ใช้งานได้ดี netstat รายงานพอร์ต 443 ที่ฟังที่อยู่ IPv6 ไฟร์วอลล์เปิดอยู่ ipv6scanner.com รายงานพอร์ต 443 ที่เปิดอยู่ ภายใน (ผ่านเทอร์มินัล) wget และ curl ได้รับการตอบสนองที่ถูกต้องดังนั้นการกำหนดค่า nginx ก็โอเค ไม่มีสัญญาณของข้อผิดพลาดจาก nginx error.log ไม่มีการบันทึกใน access.log เมื่อล้มเหลวดังนั้นการสื่อสารอาจไม่ถึงเว็บเซิร์ฟเวอร์ DNS ไม่เป็นไร การแปลใช้งานได้และการเชื่อมต่อไม่ทำงานแม้จะเข้าถึงที่อยู่ IP โดยตรง ทุกความพยายามในการเชื่อมต่อจาก "ภายนอก" (หมายถึงนอกเครือข่ายจากอินเทอร์เน็ต) ล้มเหลว (เว็บเบราว์เซอร์, telnet, ipv6-test.com, curl ... ) ไม่มีการตอบสนองเลย …
10 nginx  ssl  ipv6 

1
php-fpm: ช่วยให้เข้าใจ start_servers, min_spare_servers, max_spare_servers
ฉันพยายามที่จะปรับแต่งการติดตั้ง PHP-FPM ของฉันสำหรับเซิร์ฟเวอร์ของฉันและฉันมีปัญหาในการหาสิ่งที่จะทำอย่างไรกับpm.start_servers, pm.min_spare_serversและpm.max_spare_serversตัวแปร ฉันใช้pm = dynamic pm.max_childrenชัดเจนอย่างสมบูรณ์แบบ กระบวนการลูกแต่ละรายการให้บริการ 1 เว็บไคลเอ็นต์พร้อมกัน ตกลง. "เซิร์ฟเวอร์" คืออะไร? ชัดเจนขึ้นอยู่กับการกำหนดค่าเริ่มต้นที่ฉันมี 1 เซิร์ฟเวอร์สามารถให้บริการมากกว่า 1 ลูก ขีด จำกัด บนคืออะไร ฉันควรใช้อะไรเป็นกฎง่ายๆสำหรับจำนวนเด็ก / เซิร์ฟเวอร์ หรือมันเกี่ยวข้องเลย ในฟอรัมบางคนอ้างว่า # ของเซิร์ฟเวอร์ควรเป็น 2 x # ของ cpu cores แต่ฉันได้เห็นการกำหนดค่าที่แนะนำซึ่งมีจำนวนสูงกว่ามาก 40-50 ทั้งเอกสาร PHP และบทความ "การปรับ php-fpm" หลายบทความนั้นไม่ได้มีประโยชน์เลย
10 nginx  php  php-fpm 

2
เซสชัน Sticky กับพร็อกซี Nginx
ฉันมีแอปพลิเคชั่นที่ทำงานบนอินสแตนซ์ AWS สองแบบที่แตกต่างกันและฉันต้องการเปิดใช้งานเซสชัน "เหนียว" หรือ "ถาวร" โดยใช้ IP เพื่อให้ฉันสามารถใช้ประโยชน์จากเทคโนโลยีซ็อกเก็ตเว็บได้ด้วยวิธีการเฉพาะ ฉันมีการตั้งค่าที่แตกต่างกันสองแบบที่เกี่ยวข้องกับการใช้ip_hashเพื่อเปิดใช้งานเซสชันที่ติดหนึบเหล่านี้ ในการตั้งค่าครั้งแรกกระบวนการแอปกำลังทำงานบนอินสแตนซ์เดียวกันกับการกำหนดค่า Nginx สิ่งนี้ใช้งานได้เซสชันจะคงอยู่ตามที่คาดไว้ upstream my_app { ip_hash; # local servers server 127.0.0.1:3001 weight=100 max_fails=5 fail_timeout=300; server 127.0.0.1:3002 weight=100 max_fails=5 fail_timeout=300; keepalive 8; } ในการตั้งค่าที่สองฉันกำลังชี้ไปที่อินสแตนซ์ภายนอกและพยายามทำให้ได้ผลที่เหมือนกัน ชุดนี้ขึ้นไม่ได้ทำงาน กล่าวอีกนัยหนึ่งเซสชั่นยังคงโหลดสมดุล upstream my_app { ip_hash; # external servers server 111.11.11.11:3001 weight=100 max_fails=5 fail_timeout=300; server 222.22.22.22:3002 …

3
แสดงเนื้อหาแบบคงที่โดยใช้นักเทียบท่า + nginx + php-fpm
ฉันพยายามกำหนดค่า php webapp โดยใช้ docker แนวคิดคือการเรียกใช้แอปที่ใช้php-fpmในคอนเทนเนอร์แบบสแตนด์อโลนและมีคอนเทนเนอร์อื่นที่จะเรียกใช้ nginx แนวคิดสำหรับการตั้งค่านี้คือการใช้คอนเทนเนอร์ nginx เดียวกันกับคำขอพร็อกซีไปยัง webapps อื่น ๆ ที่ทำงานบนเครื่องเดียวกันอยู่แล้ว ปัญหาคือฉันไม่สามารถnginxประมวลผลไฟล์สแตติก (js, css, ฯลฯ ) ได้อย่างถูกต้องตามที่ร้องขอไปยังผู้fpmอื่น นี่คือลักษณะของระบบไฟล์: / ├── Makefile ├── config │ └── webapp.config └── webapp └── web ├── index.php └── static.js ฉันใช้งานทั้งหมดโดยใช้สิ่งMakefileที่มีลักษณะเช่นนี้ (ไม่สนใจdocker-composeสิ่งนี้): PWD:=$(shell pwd) CONFIG:='/config' WEBAPP:='/webapp' run: | run-network run-webapp run-nginx run-network: docker …

2
10/20 / 40Gbps nginx ไฟล์ขนาดใหญ่แคชเว็บเซิร์ฟเวอร์ [ถึง 20Gbps]
ฉันต้องการค้นหาการกำหนดค่า / ฮาร์ดแวร์ที่ดีที่สุดที่เป็นไปได้ในการส่งมอบ 40Gbps จากเซิร์ฟเวอร์เดียวในคำถามนี้ สถานการณ์ เรามีพร็อกซีเซิร์ฟเวอร์แชร์วิดีโอที่ช่วยลดยอดเขาจากเซิร์ฟเวอร์จัดเก็บข้อมูลช้าที่อยู่ด้านหลัง การรับส่งข้อมูลทั้งหมดเป็น HTTP เท่านั้น เซิร์ฟเวอร์ทำหน้าที่เป็นพร็อกซีย้อนกลับ (ไฟล์ที่ไม่ได้เก็บไว้ในเซิร์ฟเวอร์) และเว็บเซิร์ฟเวอร์ (ไฟล์ที่เก็บไว้ในไดรฟ์ในระบบ) ขณะนี้มีบางอย่างเช่นไฟล์ 100TB และเติบโตบนเซิร์ฟเวอร์หน่วยเก็บข้อมูลส่วนหลัง กลไกการแคชถูกนำไปใช้อย่างอิสระและคำถามนี้ไม่เกี่ยวกับการแคชตัวเองเนื่องจากทำงานได้ดีมาก - ปัจจุบันมีขนาด 14Gbps ส่งผ่านไปยังเซิร์ฟเวอร์ส่วนหลังเพียง 2Gbps ดังนั้นการใช้แคชจึงดี เป้าหมาย รับ 40Gbps หรือปริมาณงานที่มากขึ้นจากเครื่องเดียว ฮาร์ดแวร์ 1 HW: Supermicro SC825, X11SSL-F, Xeon E3-1230v5 (4C/8T@3.4GHz), 16GB DDR4 RAM, 2x Supermicro 10G STGN-i1S (LACP L3 + 4) SSD: 1x …

3
ฉันจะบอกให้ SELinux อนุญาตให้ nginx เข้าถึงซ็อกเก็ตยูนิกซ์ได้โดยไม่ต้อง audit2allow ได้อย่างไร
ฉันมีคำขอส่งต่อ Nginx เพื่อ gunicorn /run/gunicorn/socketผ่านซ็อกเก็ตที่ใช้ระบบปฏิบัติการยูนิกซ์ โดยค่าเริ่มต้นพฤติกรรมนี้ไม่ได้รับอนุญาตจาก SELinux: grep nginx /var/log/audit/audit.log type=SERVICE_START msg=audit(1454358912.455:5390): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=nginx comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success' type=AVC msg=audit(1454360194.623:7324): avc: denied { write } for pid=9128 comm="nginx" name="socket" dev="tmpfs" ino=76151 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:httpd_sys_content_t:s0 tclass=sock_file type=SYSCALL msg=audit(1454360194.623:7324): arch=c000003e syscall=42 success=no exit=-13 a0=c a1=1f6fe58 a2=6e a3=7ffee1da5710 …
10 nginx  selinux 

2
Nginx: วิธีการตั้งค่าส่วนหัวของโฮสต์เป็นเซิร์ฟเวอร์ที่เลือก (โหลดบาลานซ์)
ฉันมีเว็บไซต์ที่ทำงานเป็น load balancer ไซต์ A ฉันมีเว็บไซต์อื่นที่สามารถมีได้เพียงหนึ่งโดเมน ดังนั้นหากฉันเพียงแค่เปลี่ยนเส้นทางไปยังพวกเขามันบอกว่าไม่พบชื่อโฮสต์ ดังนั้นหากฉันตั้งค่าส่วนหัวเป็นบางสิ่งด้วยตนเองจะมีเพียงไซต์นั้นเท่านั้นที่ปรากฏขึ้น ฉันจะตั้งproxy_set_header Host xxxxเป็นเซิร์ฟเวอร์ที่เลือกได้อย่างไร วิธีนี้แต่ละคำขอเปลี่ยนเส้นทางใหม่จะมีส่วนหัวของโฮสต์ที่แตกต่างและเหมาะสม มันจะไม่เป็นปัญหาหากเว็บไซต์ 2 แห่งของฉันทำงานได้ตาม url และไม่ใช่ส่วนหัวของโฮสต์ worker_processes 1; error_log logs/error.log; error_log logs/error.log notice; error_log logs/error.log info; error_log logs/error.log debug; pid logs/nginx.pid; events { worker_connections 1024; } http { upstream myapp1 { #server localhost:3333; server www.asd.com:80; } server { listen …
10 nginx 

1
Nginx เปลี่ยนเส้นทางจากโดเมนเก่าไปยังใหม่ด้วย ssl
ฉันกำลังพยายามเปลี่ยนชื่อโดเมนสำหรับเว็บไซต์ของฉันจากhttps://www.myolddomain.se/เป็นhttps://www.mynewdomain.se/ ปัญหาคือสำหรับโดเมนเก่าของฉันฉันบังคับ SSL ในทุกหน้าดังนั้นลิงก์ทั้งหมดใน google และเว็บไซต์อื่น ๆ จะเชื่อมโยงกับ https เมื่อฉันพยายามเยี่ยมชมโดเมนเก่าจากลิงค์ https ฉันได้รับข้อผิดพลาดของใบรับรอง ดังนั้นคำถามของฉันคือฉันจะเปลี่ยนเส้นทางหน้าทั้งหมดที่เชื่อมโยงกับ https ไปยังโดเมนที่ปลอดภัยของ https ใน nginx โดยไม่ได้รับข้อผิดพลาดนี้ได้อย่างไร ฉันทำการค้นคว้าและพบวิธีแก้ปัญหานี้สำหรับการเปลี่ยนเส้นทางหน้าเว็บซึ่งตอนนี้ถูกแทรกในไฟล์ปรับแต่ง แม้ว่าฉันจะยังคงได้รับข้อผิดพลาดใบรับรอง! server { server_name .myolddomain.se; return 301 https://www.mynewdomain.se$request_uri; } แต่ฉันไม่สามารถทำงานได้! หากใครสามารถหาคำตอบได้ฉันก็จะขอบคุณมาก

1
nginx รองรับใบรับรองรูปแบบ DER หรือไม่
ฉันลองใช้แล้วก็ล้มเหลว การแปลงเป็น PEM ทำงานได้ดี ผู้ใช้ของเราอัปโหลดใบรับรองไปยังเซิร์ฟเวอร์ของเราและเราสงสัยว่าเราสามารถกำหนดค่า nginx เพื่อให้รองรับทั้งคู่ได้หรือไม่ ถ้าไม่มีจะมีวิธีกำหนดโดยทางโปรแกรมว่าไฟล์ใบรับรองอยู่ในรูปแบบ DER หรือ PEM หรือไม่?
10 nginx 

4
วิธีการตั้งค่าหน้าข้อผิดพลาดทางเลือกใน nginx?
ฉันกำลังกำหนดค่าการจัดการ nginx ของหน้าข้อผิดพลาดบางอย่างและไฟล์สื่อ "เริ่มต้น" อื่น ๆ (เช่น favicon.ico และ robots.txt) ในขณะนี้และฉันพบปัญหาเล็กน้อยเพื่อให้สิ่งต่าง ๆ ทำงานตามที่ฉันต้องการสำหรับหน้าข้อผิดพลาดบางอย่าง . โดยทั่วไปสิ่งที่ฉันพยายามทำคือให้บริการไฟล์บางอย่างสำหรับเซิร์ฟเวอร์ภายใต้รูทสำหรับเซิร์ฟเวอร์นั้นเช่น /var/www/someserver.com/robots.txt หากไฟล์นั้นไม่มีอยู่ฉันต้องการให้ nginx ไปที่ "default" เช่น /var/www/default/robots.txt นี่เป็นส่วนสำคัญพื้นฐานของวิธีการตั้งค่า (สำเร็จ): server { ... root /var/www/someserver.com; location ~* ^/(robots\.txt)$ { error_page 404 = @default; } location @default { root /var/www/default; } } มันใช้งานได้ดีมาก ฉันพยายามทำเช่นเดียวกันสำหรับหน้าข้อผิดพลาดและฉันไม่สามารถทำสิ่งนั้นได้แม้ว่า: server { ... …
10 nginx 

1
การเปลี่ยนเส้นทางอย่างง่ายของ Nginx ของผลิตภัณฑ์จากหมวดหมู่เก่าถึงใหม่
ฉันกำลังเปลี่ยนเส้นทางของผลิตภัณฑ์จากหมวดหมู่เก่าไปยังหมวดหมู่ใหม่ ฉันจัดการเพื่อให้ทำงานกับกฎต่อไปนี้: rewrite ^/old-category/(.*) /new-category/$1; แต่ฉันต้องการที่จะรู้ว่าเมื่อไหร่ฉันควรใช้ "end line" sign $ และอะไรคือความแตกต่างกับมันหรือไม่มีมันในกรณีของฉัน ตัวอย่างเช่น: rewrite ^/old-category/(.*)$ /new-category/$1; นอกจากนี้ฉันต้องการเปลี่ยนเส้นทางผู้ใช้หากพวกเขาเพียงแค่เขียนชื่อหมวดหมู่เก่า (ไม่มีผลิตภัณฑ์) ฉันควรสร้างกฎใหม่เฉพาะสำหรับการเปลี่ยนเส้นทางหมวดหมู่หรือฉันสามารถแก้ไขกฎปัจจุบันด้านบนเพื่อทำงานในทั้งสองกรณี ขอบคุณสำหรับคำตอบล่วงหน้า


1
วิธีบันทึกค่าดั้งเดิมของ $ remote_addr เมื่อใช้ Real-IP
สภาพแวดล้อมของฉันมีคำขอของผู้ใช้ที่ส่งผ่านระบบจำนวนมาก: [ลูกค้า] -> [ELB] ---> [nginx] -> [เว็บ] (ELB = AWS ตัวโหลดบาลานซ์แบบยืดหยุ่น) ขอบคุณคำตอบนี้ฉันมี nginx ที่กำหนดและส่งต่อที่อยู่ IP ของไคลเอ็นต์ที่ถูกต้องไปยังเซิร์ฟเวอร์ upstream (เว็บ) ด้วยX-Forwarded-ForและX-Real_IPส่วนหัว การกำหนดค่า nginx ที่เกี่ยวข้อง: real_ip_header X-Forwarded-For; set_real_ip_from 10.0.0.0/8; real_ip_recursive on; proxy_set_header X-Real-IP $remote_addr; ปัญหาของฉันคือสิ่งนี้โมดูล Real IP ใน nginx จะแทนที่$remote_addrตัวแปรที่มีอยู่ด้วยผลลัพธ์ของการX-Forwarded-Forคำนวณ สิ่งนี้ทำให้ IP ไคลเอนต์ต้นทางของฉัน แต่ฉันสูญเสียที่อยู่ IP ของระบบที่ส่งคำขอไปยังพรอกซี (เช่น ELB) โดยรวมแล้วการมี IP ของลูกค้าสำคัญกว่าสำหรับฉัน แต่ฉันต้องการบันทึกการร้องขอทั้งหมดเพื่อให้ฉันสามารถเข้าใจ …

4
เว็บเซิร์ฟเวอร์สุ่มให้บริการโฮสต์ที่แตกต่างกัน
เรามี nginx ที่ทำงานบน Ubuntu Trusty ให้บริการเว็บไซต์หลายแห่งผ่าน https โดยใช้ที่อยู่ IP เดียว สุ่มแม้ว่าดูเหมือนว่าจะเกี่ยวข้องกับภาระงานเล็กน้อย แต่บางครั้งคำขอเดียวก็เปิดใช้งาน vhost ผิด สิ่งนี้นำไปสู่คำขอเกี่ยวกับlustrum.thalia.nuการให้บริการโดยthalia.nuและในทางกลับกัน จากนั้นจะให้หน้าข้อผิดพลาดที่น่ารังเกียจเมื่อผู้ใช้จู่ ๆ ก็มีเว็บไซต์อื่น เมื่อคุณกดF5ผู้ใช้จะจบลงที่เป้าหมายเดิมอีกครั้ง ดูเหมือนว่าจะไม่เกี่ยวข้องกับเบราว์เซอร์หรือระบบปฏิบัติการ ได้รับการยืนยันว่าจะเกิดขึ้นบน Firefox (Linux, Windows, Mac), Edge (Windows) และ Chrome (Linux, Windows, Android) และ Safari (iOS) ปัญหานี้เกิดขึ้นบ่อยครั้งมากขึ้นเมื่อระบบอยู่ภายใต้การโหลดซึ่งบ่งบอกถึงสภาพการแข่งขันบางประเภท lustrum.thalia.nu server { server_name lustrum.thalia.nu; listen 443 ssl; ssl on; ssl_certificate /etc/nginx/certs/lustrum.thalia.nu.crt; ssl_certificate_key /etc/nginx/certs/lustrum.thalia.nu.key; …

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