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

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

3
ซึ่งเร็วกว่าในการแสดงหน้า PHP, Apache หรือ NGINX
ผมเคยอ่านค่อนข้างบิตบนผลประโยชน์ที่สำคัญในการทำงานมากกว่า NGINX Apache สำหรับการให้บริการไฟล์คง อย่างไรก็ตามฉันไม่เคยเห็นบทความพูดคุยเกี่ยวกับ Apache vs NGINX สำหรับการให้บริการหน้า PHP คำถาม: การแสดงหน้าPHP , Apache หรือ NGINX เร็วกว่าไหน?

5
ทางเลือกใน Apache
ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ สแต็คปัจจุบันของเราคือ Apache + Tomcat + MySQL โดยใช้ProxyPassAJP เพื่อดำเนินการตามคำขอจาก Apache ไปยัง Tomcat นอกจากนี้เรายังเรียกใช้ PHP สำหรับ Wordpress ในเว็บไซต์เดียวกันและต้องการ.htaccessไฟล์ทำงาน ในการตอบสนองต่อปัญหาที่น่ารำคาญ (ดูหน้าสแต็คโอเวอร์โฟลว์)เรากำลังพิจารณาสแต็คทางเลือก โปรดทราบว่าโดยทั่วไปเราชอบ Apache แต่ปัญหานี้เป็น show-stopper: หากเราไม่สามารถแก้ไขได้เราจะใช้ Apache ไม่ได้ ทางเลือก ได้แก่ : โพงตัวเดียว Glassfish (เซิร์ฟเวอร์แอป Java แยกจาก Tomcat) ท่าเทียบเรือ (เซิร์ฟเวอร์ Java) ยาง LightTPD (เซิร์ฟเวอร์ HTTP น้ำหนักเบา) Nginx (เซิร์ฟเวอร์ HTTP น้ำหนักเบา) …

1
“ บิตแอดเดรสต่ำหมายถึงอะไร” หมายความว่าอย่างไร
ฉันพยายาม จำกัด การเข้าถึงจากอินเทอร์เน็ตไปยังหน้าเข้าสู่ระบบในบล็อกของฉันและทำให้ใช้ได้จากอินทราเน็ตของฉันเท่านั้น ดังนั้นฉันได้กำหนดตำแหน่งต่อไปนี้ location ~/ghost/signing { allow 192.168.0.1/24; deny all; } เมื่อฉันรีสตาร์ต Nginx ฉันจะได้รับคำเตือนต่อไปนี้: บิตที่อยู่ต่ำของ192.168.0.1/24ไม่มีความหมาย/etc/nginx/sites-enabled/site นอกจากนี้ฉันไม่สามารถเข้าถึงตำแหน่งจากอินทราเน็ตของฉัน ดังนั้นฉันเดาว่าคำสั่ง allow ไม่ได้ "ถูกโหลด" และท้ายที่สุดฉันก็ปฏิเสธการเข้าถึง/ghost/signinหน้านี้ทั้งหมด เหตุใดบิตแอดเดรสต่ำจึงไม่มีความหมายและฉันควรวลีคำสั่งเพื่อให้มันทำงานตามที่ฉันตั้งใจได้อย่างไร ฉันพยายามที่จะใช้บิตที่อยู่ต่ำของ google นั้นไร้ความหมาย แต่ฉันจบลงด้วยการโพสต์ในสิ่งที่ฉันคิดว่าเป็นภาษารัสเซียและฉันไม่รู้วิธีการแปลจากภาษารัสเซีย
15 nginx 

1
การแยกสายยาวในไฟล์กำหนดค่า nginx
เพื่อที่จะไม่ส่งผ่านขยะไปยังส่วนหลังฉันมี regex ที่เข้มงวดสำหรับlocationคำสั่ง ดูเหมือนว่านี้: location ^~ "/(some|stuff|more|bar|etc(-testing)?)/[a-zA-Z0-9]+/...(more|restrict).ext { # other directives } ฉันต้องการพับบรรทัดที่ 80 ตัวอักษรมีวิธีแยกการกำหนดค่าหรือไม่ ผลลัพธ์ต่อไปนี้มีข้อผิดพลาดทางไวยากรณ์ แต่เป็นสิ่งที่ฉันกำลังมองหา: location ^~ "/(some|stuff|more|bar|etc(-testing)?)/[a-zA-Z0-9]+/"\ "...(more|restrict).ext" { # results in a literal newline (%0A) being accepted location ^~ "/(some|stuff|more|bar|etc(-testing)?)/[a-zA-Z0-9]+/ ...(more|restrict).ext" { ฉันไม่พบคำแนะนำในเอกสาร ( http://wiki.nginx.org/ConfigNotationหรือhttp://wiki.nginx.org/HttpCoreModule#locationพูดถึงสิ่งใดเกี่ยวกับเส้นพับ)

3
กรณี nginx เขียนตายด้าน
ฉันพยายามทำให้ nginx เปลี่ยนเส้นทางของฉันให้สะอาดที่สุด ฉันเข้าใจ ~ * สำหรับตัวพิมพ์เล็กและตัวพิมพ์เล็ก แต่ฉันสามารถทำให้มันใช้ได้ในตัวอย่างที่ 2 ตัวอย่างที่ 1 rewrite ^/foobar http://www.youtube.com/watch?v=oHg5SJYRHA0 redirect; ตัวอย่างที่ 2 - ใช้งานได้ แต่ไม่มีประสิทธิภาพเท่าบรรทัดด้านบน if ( $request_filename ~* foobar ) { rewrite ^ http://www.youtube.com/watch?v=oHg5SJYRHA0 redirect; } มีวิธีการเปลี่ยนเส้นทางที่ไม่ตอบสนองต่อ case โดยใช้ตัวอย่างที่ 1 โดยไม่ทำให้มันเป็นโคลนหรือไม่? ขอบคุณ
15 nginx  rewrite 

2
nginx: upstream ที่มีหลายคำสั่งเซิร์ฟเวอร์?
ฉันพยายามที่จะจัดแพคเกจ 2 โปรแกรมประยุกต์ที่ใช้ Nginx เป็นพร็อกซี่และส่งมอบแต่ละไฟล์ config /etc/nginx/conf.d/ลง การทำเช่นนี้ในไฟล์เดียว ( combined.conf) ใช้งานได้ดี: upstream backend1 { http://localhost:8989; } upstream backend2 { http://localhost:8990; } server { location /backend1/ { proxy_pass http://backend1; } location /backend2/ { proxy_pass http://backend2; } อย่างไรก็ตามเมื่อแบ่งออกเป็น 2 ไฟล์หนึ่งในการเปลี่ยนเส้นทางจะล้มเหลวอย่างเป็นระบบ: backend1.conf: upstream backend1 { http://localhost:8989; } server { location /backend1/ { proxy_pass …
15 nginx 

3
การเปลี่ยนเส้นทาง Nginx ขึ้นอยู่กับตัวแทนผู้ใช้
นี่คือ nginx conf ปัจจุบันของฉัน: server { listen 90; server_name www.domain.com www.domain2.com; root /root/app; location / { try_files $uri =404; } location ~ /([-\w]+)/(\w+)/ { proxy_pass bla bla } } มันทำงานได้ดีทั้งwww.domain.comและwww.domain2.comแสดงเนื้อหาเดียวกัน ตอนนี้ฉันต้องการเพิ่ม หากผู้ใช้เยี่ยมชม www.domain.com และตัวแทนผู้ใช้คือ xxx ให้เปลี่ยนเส้นทางไปที่ www.domain2.com ฉันค้นหาและลองใช้วิธีการจำนวนมากแล้ว แต่ก็ไม่มีวิธีใดทำงานได้
15 nginx 

2
nginx uLimit 'worker_connections เกินขีด จำกัด ทรัพยากรไฟล์เปิด: 1024'
ฉันยังคงได้รับข้อผิดพลาดนี้nginx/error.logและมันทำให้ฉันถั่ว: 8096 worker_connections exceed open file resource limit: 1024 ฉันพยายามทุกอย่างที่ฉันสามารถคิดและไม่สามารถระบุได้ว่าอะไรคือข้อ จำกัด ของ nginx ที่นี่ คุณช่วยบอกได้ไหมว่าฉันหายไปไหน? nginx.conf มีสิ่งนี้: worker_processes 4; events { worker_connections 8096; multi_accept on; use epoll; } ฉันเปลี่ยน Ulimit ของระบบในsecurity/limits.confลักษณะนี้: # This is added for Open File Limit Increase * hard nofile 199680 * soft nofile 65535 root hard …
15 linux  nginx  debian  ulimit  files 

2
Nginx ไม่ได้แคชข้อมูล
ฉันมี REST API อยู่หลังพร็อกซี nginx การมอบฉันทะได้ผลดี แต่ฉันไม่สามารถแคชคำตอบใด ๆ ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมมาก: กำหนดค่า Nginx: worker_processes 10; error_log logs/error.log; error_log logs/error.log notice; error_log logs/error.log info; pid logs/nginx.pid; events { worker_connections 1024; } http { proxy_cache_path /path/to/cache/dir keys_zone=one:60m; proxy_cache_methods GET HEAD POST; upstream backend { server server1 backup; server server2 weight=5; } access_log …
15 nginx  proxy  cache  solr 

1
Nginx - แมป URL เดียวกับไฟล์
ฉันไม่สามารถค้นหาวิธีที่ฉันสามารถแมป URL เดียวกับไฟล์คงที่เดียว ฉันเหนื่อย: location /feeds/seznam/ { alias /path/to/file/feed.xml; } แต่สิ่งนี้ใช้ไม่ได้ (ในบันทึกฉันเห็นว่ามันผนวก index.html เข้ากับพา ธ )
15 nginx 

1
ปัญหาหลายตำแหน่งของ Nginx
ฉันกำลังพยายามแบ่งแอปพลิเคชั่น 3 ตัวออกจากที่เก็บหนึ่งแห่งเป็น 3 แต่ทำให้โครงสร้าง URL ดังนั้นโดยทั่วไปสถานที่ที่แตกต่างกันภายใต้โดเมนเดียวกันจะต้องถูกส่งโดยแอปพลิเคชันที่แตกต่างกัน สิ่งที่ฉันกำลังดิ้นรนคือแอปหนึ่งต้องเป็นทางเลือกสำหรับ URL ที่ไม่มีอยู่จริงดังนั้นหากแอปแรกไม่ตรงกันและแอปที่สองไม่มีอยู่แอปที่สามควรจัดการคำขอ โครงสร้างที่ฉันมีคือ: / etc / nginx / sites-enabled / main_site, ที่นี่, นอกเหนือจาก server_name และบันทึกที่ฉันได้รับinclude /etc/nginx/subsites-enabled/*, ที่ฉันมีไฟล์กำหนดค่า 3 ไฟล์, หนึ่งไฟล์สำหรับแต่ละแอป ไฟล์กำหนดค่า 3 ไฟล์แต่ละไฟล์มีบล็อกที่ตั้ง ฉันได้ลองใช้ lookahead เชิงลบใน regex (โดยทั่วไปแล้วพยายามที่จะ hardcode URL ที่แอพอื่น ๆ จัดการ) แต่ล้มเหลว ดังนั้นเพื่อสรุป: / และ / ชุมชนควรได้รับการจัดส่งโดย /etc/nginx/subsites-enabled/example.org/home (สคริปต์ Perl …
15 nginx 

1
คำสั่ง NGINX“ client_max_body_size” ไม่ทำงานในบล็อก“ ตำแหน่ง”
ฉันมี/adminแคตตาล็อกในเว็บไซต์ของฉันและฉันต้องการอนุญาตให้ผู้ดูแลระบบอัปโหลดไฟล์ขนาดใหญ่ผ่านเว็บฟอร์ม นี่คือลักษณะของ nginx.com ของฉัน: http { # ... client_max_body_size 16M; # ... server { server_name example.com; root /var/www/example.com; index index.php; location /admin { client_max_body_size 256M; } # ... } } สิ่งนี้ใช้ไม่ได้ /admin/index.phpสคริปต์ไม่สามารถอัปโหลดไฟล์ที่มีขนาดใหญ่กว่า 16Mb: 413 คำขอเอนทิตีที่ใหญ่เกินไป อย่างไรก็ตามถ้าฉันย้ายclient_max_body_sizeไปserverบล็อกทุกอย่างทำงานได้ดี แต่ฉันไม่ต้องการเปลี่ยนแปลงเฉพาะadminแคตตาล็อก ตามเอกสาร , client_max_body_sizeสามารถวางอยู่ภายในlocationบล็อกการตั้งเฉพาะสำหรับเส้นทางที่ต้องการแทนที่ มีอะไรผิดปกติ?
15 nginx 

2
วิธีการติดตามการเปลี่ยนเส้นทาง HTTP ภายใน nginx
ฉันมีพร็อกซี HTTP ที่ใช้ nginx และฉันต้องการประมวลผลการเปลี่ยนเส้นทาง HTTP ทั้งหมดภายในเพื่อให้ลูกค้าได้รับการตอบกลับล่าสุดในเชนการเปลี่ยนเส้นทางเท่านั้น รหัสพื้นฐานดูเหมือนว่า: location /proxy { rewrite ^/proxy/([^/]+) $1 break; proxy_pass http://$uri/; } ความพยายามของฉันในการเปลี่ยนเส้นทาง 1 ระดับดังต่อไปนี้คือ: error_page 301 302 307 =200 @redir; ... และมีที่ตั้งชื่อนี้: location @redir { proxy_pass $proxy_location; } มีเพียงตัวแปร $ proxy_location และฉันไม่สามารถหาวิธีสร้างมันได้ มันควรมีค่าของLocation:ส่วนหัวที่ได้รับจากต้นน้ำ ความคิดใด ๆ
15 nginx 

5
Nginx ชื่อเซิร์ฟเวอร์ที่ขัดแย้งกันสำหรับโดเมนย่อย
ขณะนี้ฉันมี vhost ที่ทำงานบน Nginx สำหรับ foo.domain.com และทุกอย่างใช้งานได้ดี ฉันสร้างไฟล์ใหม่สำหรับโดเมนย่อยใหม่ฉันต้องการเพิ่มชื่อ bar.domain.com ฉันใช้การตั้งค่าเดียวกันสำหรับทั้งคู่ เมื่อฉันรีสตาร์ท Nginx ฉันจะได้รับ Restarting nginx: nginx: [warn] conflicting server name "" on 0.0.0.0:443, ignored nginx. เมื่อฉันไปที่ bar.domain.com ฉันเห็นสิ่งที่ฉันควรจะเห็น แต่เมื่อฉันไปที่ foo.domain.com ฉันเห็นหน้าเว็บที่ bar.domain.com เชื่อมโยงไปถึง ฟู upstream php-handler { server unix:/var/run/php5-fpm.sock; } server { listen 80; server_name foo.domain.com; return 301 https://$server_name$request_uri; } …
15 nginx  ssl  virtualhost 

2
เดินสาย uWSGI เพื่อทำงานกับ Django และ nginx บน Ubuntu 16.04
ฉันพยายามที่จะปฏิบัติตามการกวดวิชานี้จะติดตั้งuWSGIด้วยDjangoและบนnginxUbuntu16.04 มันทำงานได้ดีจนกระทั่งขั้นตอนสุดท้าย (โอ้ประชด ... ) ที่ฉันพยายามใช้คำสั่งนี้: sudo service uwsgi start หากล้มเหลวด้วยข้อผิดพลาดต่อไปนี้: ไม่สามารถเริ่ม uwsgi.service: ไม่พบหน่วย uwsgi.service คนอื่น ๆ ดูเหมือนจะได้รับข้อผิดพลาดที่คล้ายกัน: ไม่สามารถเริ่ม uwsgi.service: หน่วย uwsgi.service ไม่สามารถโหลดได้: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว ดูเหมือนว่าปัญหาจะเกี่ยวข้องกับเวอร์ชันของ Ubuntu ในขณะที่การกวดวิชาที่มุ่งเป้าไปที่อูบุนตู 14.04 ดูเหมือนว่ามันจะไม่ทำงานสำหรับรุ่นใหม่เพราะในรุ่น 15 Ubuntu เปลี่ยนจากupstartภูต init กับsystemdภูต init ฉันsystemdจะใช้เพื่อเรียกใช้ uWSGI เพื่อให้ทำงานกับ nginx และ Django ได้อย่างไร
14 ubuntu  nginx  django  uwsgi  wsgi 

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