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

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


2
จะส่งพารามิเตอร์ที่กำหนดเองไปยัง PHP จาก Nginx ได้อย่างไร
ฉันใช้Nginx 1.2.4ร่วมกับPHP-FPM 5.4.8มีการส่งผ่านและพยายามที่จะส่งผ่านพารามิเตอร์ที่กำหนดเองเพื่อfastcgi PHPนี่คือตัวเลือกที่ฉันพบ: โดยใช้envคำสั่งการตั้งค่าตัวแปรสภาพแวดล้อมในnginxและเรียกมันด้วยgetenv()หรือจาก$_ENV PHPปัญหาคือenvการทำงานในmainบริบทเท่านั้นในขณะที่ฉันต้องตั้งค่าพารามิเตอร์ในserverบริบท ใช้fastcgi_paramคำสั่งตามที่ออกแบบมาสำหรับสิ่งนั้น ฉันได้ลองเปลี่ยนค่าของพารามิเตอร์บางอย่างที่ใช้fastcgi_paramแต่ไม่ประสบความสำเร็จ: Nginx: fastcgi_param PATH_INFO "/var/tmp"; PHP: ฉันตรวจสอบอาร์เรย์ที่กำหนดไว้ล่วงหน้าทั้งหมดที่ฉันสามารถหาได้: echo '<pre>'; echo "\n".'$GLOBALS'."\n"; var_dump($GLOBALS); echo "\n".'$_SERVER'."\n"; var_dump($_SERVER); echo "\n".'$_GET'."\n"; var_dump($_GET); echo "\n".'$_POST'."\n"; var_dump($_POST); echo "\n".'$_FILES'."\n"; var_dump($_FILES); echo "\n".'$_REQUEST'."\n"; var_dump($_REQUEST); echo "\n".'$_SESSION'."\n"; var_dump($_SESSION); echo "\n".'$_ENV'."\n"; var_dump($_ENV); echo "\n".'$_COOKIE'."\n"; var_dump($_COOKIE); echo "\n".'$php_errormsg'."\n"; var_dump($php_errormsg); echo "\n".'$HTTP_RAW_POST_DATA'."\n"; var_dump($HTTP_RAW_POST_DATA); echo …
10 php  nginx  fastcgi  php-fpm 

4
การตรวจจับ Slashdot effect ใน nginx
มีวิธีที่ฉันสามารถกำหนดให้ Nginx แจ้งเตือนฉันได้หรือไม่หากการเข้าชมจากผู้อ้างอิงเกินเกณฑ์หรือไม่ เช่นถ้าเว็บไซต์ของฉันให้ความสำคัญกับ Slashdot และในทันใดฉันก็มีเพลงฮิต 2K มาในอีกหนึ่งชั่วโมงฉันอยากได้รับการแจ้งเตือนเมื่อไปเกิน 1K ต่อชั่วโมง เป็นไปได้ไหมที่จะทำสิ่งนี้ใน Nginx? อาจเป็นไปได้โดยไม่ต้อง lua? (เนื่องจากผลิตภัณฑ์ของฉันไม่ได้รวบรวม lua)
10 nginx  traffic 

2
nginx: worker_proccesses คำสั่งไม่ทำงาน
ฉันต้องการลองตั้งค่ากระบวนการของผู้ปฏิบัติงานใน nginx แต่มันทำให้ฉันเกิดข้อผิดพลาด: nginx: [เกิดขึ้นจริง] คำสั่ง "worker_processes" ไม่อนุญาตที่นี่ใน / etc / nginx / เปิดใช้งานไซต์ / ค่าเริ่มต้น: 1 nginx: ไฟล์กำหนดค่า /etc/nginx/nginx.conf นี่คือรหัสของฉัน worker_processes 4; worker_rlimit_nofile 8192; worker_priority 0; worker_cpu_affinity 0001 0010 0100 1000; server { server_name --.--.--.---; listen 80; #root /var/www/devsites/wordpress/; root /var/www/devsites/trademob/tm-hp-v2/; ฉันจะแก้ไขปัญหานี้ได้อย่างไร
10 nginx 

3
nginx fastcgi“ ไม่รู้จักสคริปต์หลัก” เมื่อกำหนดค่า userdir
ฉันเกลียดการกำหนดค่า nginx มันซับซ้อนมาก ฉันจะทำให้ PHP ทำงานในผู้ใช้ของฉันได้อย่างไร? นี่คือส่วนที่เกี่ยวข้องของ nginx.conf ของฉัน: location ~ ^/~(.+?)(/.*)?$ { autoindex on; autoindex_exact_size off; alias /home/$1/public_html$2; location ~ \.php { include /etc/nginx/fastcgi.conf; fastcgi_intercept_errors on; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; } } สิ่งนี้ทำให้ฉันมีข้อผิดพลาด: FastCGI sent in stderr: "Primary script unknown" while reading response header from upstreamในบันทึกข้อผิดพลาด nginx นี่คือฉัน/etc/nginx/fastcgi.conf: fastcgi_param …
10 nginx  fastcgi  php-fpm 

3
mod_rpaf มีปัญหากับหน้า Nginx, Apache back-end หลังจากอัพเกรด Ubuntu
ฉันใช้ Nginx front-end สำหรับไฟล์สแตติกและพร็อกซีไปที่ Apache backend สำหรับ PHP และ Passenger โดยใช้ mod_rpaf ของ Apache เพื่อตั้งค่า IP แอดเดรสรีโมตที่ถูกต้องบนแบ็กเอนด์ ทุกอย่างทำงานได้ดีจนกระทั่งฉันอัพเกรดเป็น Ubuntu 12.04 (แม่นยำ) ตอนนี้ Apache รายงานการเชื่อมต่อทั้งหมดที่มาจาก 127.0.0.1 นี่คือการกำหนดค่าที่เกี่ยวข้อง ไม่มีอะไรเปลี่ยนแปลงที่นี่กับการอัพเกรด Nginx: proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; mod_rpaf: <IfModule mod_rpaf.c> RPAFenable On RPAFsethostname On RPAFproxy_ips 127.0.0.1 ::1 RPAFheader X-Forwarded-For </IfModule> ฉันใช้%{X-Forwarded-For}iในคำสั่ง Apache LogFormat และบันทึกการเข้าถึงแสดงที่อยู่ระยะไกลที่ถูกต้องดังนั้นฉันรู้ว่า Nginx กำลังส่งที่อยู่อย่างถูกต้อง …

1
git บน HTTP ด้วย gitolite และ nginx
ฉันกำลังพยายามติดตั้งเซิร์ฟเวอร์ที่ repo git ของฉันสามารถเข้าถึงได้ด้วย HTTP (S) ฉันใช้ gitolite และ nginx (และ gitlab สำหรับเว็บอินเตอร์เฟส แต่ฉันสงสัยว่ามันสร้างความแตกต่าง) ฉันค้นหาตลอดบ่ายและฉันคิดว่าฉันติดอยู่ ฉันคิดว่าฉันเข้าใจแล้วว่า nginx ต้องการ fcgiwrap เพื่อทำงานกับ gitolite ดังนั้นฉันจึงลองใช้การกำหนดค่าหลายอย่าง แต่ไม่สามารถใช้งานได้ ที่เก็บของฉันอยู่ที่ / home / git / repositories นี่คือการกำหนดค่า nginx สามรายการที่ฉันได้ลอง 1: location ~ /git(/.*) { gzip off; root /usr/lib/git-core; fastcgi_pass unix:/var/run/fcgiwrap.socket; include /etc/nginx/fcgiwrap.conf; fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; fastcgi_param …
10 nginx  git  gitolite  fcgi 

4
เหตุใดนามแฝง nginx ของฉันจึงไม่ทำงาน
ฉันกำลังพยายามตั้งค่านามแฝงดังนั้นเมื่อมีคนเข้าถึง/phpmyadmin/nginx จะดึงมันมา/home/phpmyadmin/มากกว่าจากรูทเอกสารปกติ อย่างไรก็ตามทุกครั้งที่ฉันดึง URL มันจะให้ 404 กับทุกรายการที่ไม่ถูกดึงผ่าน fastcgi fastcgi ดูเหมือนว่าจะทำงานได้ดีในขณะที่ส่วนที่เหลือไม่ได้ straceกำลังบอกฉันว่ากำลังพยายามดึงทุกอย่างออกจากรูทเอกสารตามปกติ แต่ฉันไม่สามารถหาสาเหตุได้ ใครสามารถให้ข้อมูลเชิงลึกบางอย่าง นี่คือส่วนที่เกี่ยวข้องของการกำหนดค่าของฉัน: location ~ ^/phpmyadmin/(.+\.php)$ { include fcgi.conf; fastcgi_index index.php; fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_param SCRIPT_FILENAME /home$fastcgi_script_name; } location /phpmyadmin { alias /home/phpmyadmin/; }
10 nginx  alias 

1
NGINX แปลง HEAD เป็นคำขอ GET
เนื่องจากการตัดสินใจออกแบบที่แย่มากเรามีแอปพลิเคชันที่ไม่สามารถตอบคำขอ HTTP HEAD ได้ (ส่งคืน 'ไม่อนุญาตให้ใช้วิธีการ') การปรับเปลี่ยนซอฟต์แวร์เพื่อส่งกลับ HEAD ร้องขออย่างถูกต้องนั้นอาจเป็นเรื่องที่ยุ่งยากไม่ได้ แต่เป็นงานพิเศษ แอปพลิเคชั่นอยู่หลังพร็อกซี NGINX ฉันสงสัยว่ามีวิธีรับ NGINX ในการแปลงคำขอ HEAD ที่ได้รับจากลูกค้าเป็นคำขอ GET เป็นแบ็คเอนด์จากนั้นละทิ้งการตอบสนองยกเว้นส่วนหัวและส่งกลับไปที่ ลูกค้าราวกับว่าแอปพลิเคชันเซิร์ฟเวอร์ของเราสามารถตอบสนองต่อคำขอ HEAD ได้ การกำหนดค่าปัจจุบัน (มาตรฐานที่ค่อนข้างพอใช้) upstream ourupstream{ server unix:/var/apps/sockets/ourapp.socket.thread1 server unix:/var/apps/sockets/ourapp.socket.thread2 server unix:/var/apps/sockets/ourapp.socket.thread3 [like 20 of these] } server { listen 1.2.3.4:80; server_name ourapp; access_log /var/apps/logs/ourapp.nginx.plog proxy; error_log /var/apps/logs/ourapp.nginx.elog info; gzip …
10 nginx 

1
การเปลี่ยนเส้นทางจาก nginx หนึ่งไปยังอีก
ฉันมีเซิร์ฟเวอร์สองตัว (A และ B) กับ NGINX เซิร์ฟเวอร์ A กำลังให้บริการไซต์เก่าและเซิร์ฟเวอร์ B กำลังให้บริการไซต์ใหม่ ฉันอัปเดต DNS ของฉันแล้ว แต่ค่อนข้างช้า: ในสำนักงานของฉันฉันยังคงเห็นไซต์เก่าของฉัน: subdomain.site.com ฉันจะเปลี่ยนเส้นทางคำขอทั้งหมดจากเซิร์ฟเวอร์ A สำหรับโดเมนย่อยนี้ไปยังเซิร์ฟเวอร์ B ได้อย่างไร ตอนนี้พวกเขาทั้งสองได้รับการจัดการกับสิ่งนี้ใน NGINX: server { listen 80; server_name subdomain.site.ru; root /var/www/subdomain/public; passenger_enabled on; }
10 nginx  redirect 

2
การทำความเข้าใจตัวอธิบายไฟล์สูงสุดสำหรับ linux และ nginx และค่าที่ดีที่สุดสำหรับ worker_rlimit_nofile
ฉันพบข้อผิดพลาด "ตัวอธิบายไฟล์มากเกินไป" ที่พบได้บ่อยบน nginx หลังจากค้นหามากวิธีการแก้ปัญหาอย่างชัดเจนเพื่อเพิ่มจำนวนของตัวอธิบายไฟล์ที่มีให้ nginx แต่มีข้อมูลไม่เพียงพอสำหรับฉันที่จะรู้สึกสะดวกสบายในการทำสิ่งนี้ในวิธีที่มีความหมายและปลอดภัย นี่คือประเด็นหลักที่กระทู้ / ฟอรั่มส่วนใหญ่ครอบคลุม: ระบบปฏิบัติการมีขีด จำกัด ตัวอธิบายไฟล์ทั้งหมดของตัวเอง (ในระบบของฉันcat /proc/sys/fs/file-maxเอาต์พุต "100678") ผู้ใช้แต่ละคนสามารถมีขีด จำกัด ของตนเองเช่นกัน (แต่ในระบบของฉันทำงานulimitเป็นผู้ใช้ส่งออก "ไม่ จำกัด " ดูการปรับปรุงที่ด้านล่างพร้อมรายละเอียดเพิ่มเติม ) มีไม่กี่คนที่พูดอะไรบางอย่างตามสายของสิ่งที่บุคคลนี้พูดว่า: 'Directive worker_rlimit_nofile ไม่ได้ระบุ "จำนวน" มันเป็นขีด จำกัด ของระบบปฏิบัติการ Directive worker_rlimit_nofile อนุญาตเพียงวิธีที่รวดเร็วและสกปรกเพื่อขยายขีด จำกัด นี้หากยังไม่เพียงพอ ' ดังนั้นฉันเดาว่าความหมายของมันคือ "ดีกว่า" เพื่อกำหนดขีด จำกัด สำหรับผู้ใช้ nginx OS แทนที่จะเป็น config ฉันสามารถโยนมูลค่าของ _ …
10 linux  nginx  ulimit 

4
nginx + fastCGI + Django - รับความเสียหายของข้อมูลในการตอบสนองที่ส่งไปยังลูกค้า
ฉันใช้ Django ที่อยู่เบื้องหลัง nginx โดยใช้ FastCGI ฉันได้ค้นพบว่าในการตอบสนองบางอย่างที่ส่งไปยังลูกค้าการสุ่มข้อมูลเกิดขึ้นกลางการตอบสนอง (อาจเป็นสองร้อยไบต์หรือประมาณกลาง) ณ จุดนี้ฉันได้แคบลงไปทั้งเป็นบั๊กในตัวจัดการ FastCGI ของ nginx หรือตัวจัดการ FastCGI ของ Django (เช่นอาจเป็นจุดบกพร่องใน flup) เนื่องจากปัญหานี้ไม่เคยเกิดขึ้นเมื่อฉันเรียกใช้เซิร์ฟเวอร์ Django ในrunserverโหมดสแตนด์อโลน (เช่น) มันเกิดขึ้นในโหมด FastCGI เท่านั้น แนวโน้มที่น่าสนใจอื่น ๆ : มันมีแนวโน้มที่จะเกิดขึ้นกับการตอบสนองที่มากขึ้น เมื่อลูกค้าเข้าสู่ระบบเป็นครั้งแรกพวกเขาจะถูกส่งจำนวนชิ้น 1MB เพื่อซิงค์พวกเขาไปยังเซิร์ฟเวอร์ฐานข้อมูล หลังจากซิงค์ครั้งแรกคำตอบจะเล็กกว่ามาก (โดยปกติจะมีไม่กี่ KB ต่อครั้ง) ความเสียหายมักจะเกิดขึ้นกับชิ้นส่วนขนาด 1MB ที่ส่งไปเมื่อเริ่มต้น มันเกิดขึ้นบ่อยครั้งเมื่อไคลเอนต์เชื่อมต่อกับเซิร์ฟเวอร์ผ่าน LAN (เช่นการเชื่อมต่อที่มีความหน่วงต่ำการเชื่อมต่อที่มีแบนด์วิธสูง) นี่ทำให้ฉันคิดว่ามีสภาพการแข่งขันบางอย่างใน nginx หรือ flup ที่เลวร้ายลงด้วยอัตราข้อมูลที่เพิ่มขึ้น ตอนนี้ฉันต้องหลีกเลี่ยงปัญหานี้โดยใส่ SHA1 …

5
Nginx สนับสนุนการตรวจสอบสิทธิ์ LDAP หรือไม่
nginx รองรับการตรวจสอบความถูกต้อง ldap หรือไม่? ฉันเพิ่งย้ายจาก apache และต้องการย้ายการตรวจสอบสิทธิ์ทั้งหมดของฉันซึ่งใช้ openldap และ mod_auth_ldap เป็น nginx แจ้งให้เราทราบหากเป็นไปได้ จากหน้านี้แสดงรายการโมดูลทั้งหมดที่ nginx มีฉันไม่เห็นพูดถึงเกี่ยวกับ LDAP ขอบคุณ
10 centos  nginx  ldap  openldap 

7
วานิช -> Nginx -> Apache เป็นความคิดที่ดีหรือไม่?
ฉันกำลังคิดเกี่ยวกับสถาปัตยกรรมสำหรับเว็บเซิร์ฟเวอร์ใหม่ การใช้วานิชเป็นแคชต่อหน้า Nginx เป็น reverse-proxy และให้บริการไฟล์คงที่หน้า apache สำหรับการยกของหนักทั้งหมดเป็นความคิดที่ดีหรือไม่? ฉันจะรัน php และ ruby ​​บนแอปพลิเคชันทางรถไฟ จะมีค่าใช้จ่ายมากเกินไปที่ส่งคำขอ php ไป apache ผ่านสองกระบวนการอื่นหรือไม่ ขอบคุณมาก!

2
วิธีจัดการการเชื่อมต่อ http ที่เข้ารหัสและไม่เข้ารหัสผ่านพอร์ตเดียว
โปรดดูแผนภาพต่อไปนี้ งานนี้ควรทำยังไง? เมื่อรีโมตร้องขอ http: // myhost.com:8080/* คำขอควรถูกส่งต่อไปยังเซิร์ฟเวอร์ http ที่รับฟังพอร์ต 8008 ของอินเตอร์เฟสลูปแบ็ค นี่คือส่วนที่ง่าย เมื่อผู้ใช้ระยะไกลร้องขอ http: // myhost.com:8080/specialurl ... โปรแกรมที่ทำหน้าที่เป็นเกตเวย์ระดับแอปพลิเคชันควรจะสามารถอัพเกรดการเชื่อมต่อไปยังเซสชันที่เข้ารหัส ( โดยไม่เปลี่ยนพอร์ต ) หลังจากสร้างเซสชันที่เข้ารหัสด้วยเบราว์เซอร์ระยะไกลแล้วควรส่งต่อการร้องขอไปยังโปรแกรม C ที่ฟังพอร์ต 8000 ของอินเตอร์เฟสลูปแบ็ค คำถามของฉันคือ : คุณเคยปรับใช้โซลูชันเช่นนี้ในสภาพแวดล้อมการผลิตหรือไม่? ถ้าคุณมี... ผลิตภัณฑ์ใดที่คุณใช้เพื่อทำหน้าที่เป็นเกตเวย์แอปพลิเคชัน คุณสามารถให้ตัวอย่างการกำหนดค่าได้หรือไม่ ข้อ จำกัด อย่างหนัก : ฉันไม่สามารถควบคุมไฟร์วอลล์ได้และพอร์ตเดียวที่ฉันสามารถรับทราฟฟิกภายนอกเข้าสู่เซิร์ฟเวอร์ภายในได้คือ 8080 หมายเลขพอร์ตไม่เกี่ยวข้องสิ่งนี้คือมีพอร์ตเดียวที่เปิดในระดับไฟร์วอลล์ที่ส่งต่อขาเข้า การรับส่งข้อมูลไปยังเซิร์ฟเวอร์ภายใน เซิร์ฟเวอร์ภายในต้องใช้งาน Linux (ขณะนี้กำลังเรียกใช้ Debian Lenny) ผู้ใช้ระยะไกลไม่ต้องการอะไรมากไปกว่าเว็บเบราว์เซอร์ปัจจุบันและการเชื่อมต่ออินเทอร์เน็ตเพื่อเข้าถึงเซิร์ฟเวอร์นี้ ซึ่งหมายความว่าการส่งต่อพอร์ตย้อนกลับผ่าน SSH ไม่ใช่ตัวเลือกที่นี่ ฉันต้องการผลิตภัณฑ์ที่ได้รับการทดสอบในการผลิตและสามารถนำไปใช้ได้อย่างง่ายดาย …
10 linux  nginx  http  https  lighttpd 

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