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

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

5
Docker - ปรับ nginx และ php-fpm แยกกัน
ฉันได้เล่นกับนักเทียบท่าและนักเทียบท่าเขียนและมีคำถาม ปัจจุบันนักเทียบท่าของฉัน-compose.yml มีลักษณะเช่นนี้: app: image: myname/php-app volumes: - /var/www environment: <SYMFONY_ENVIRONMENT>: dev web: image: myname/nginx ports: - 80 links: - app volumes_from: - app แอพมี php-fpm ที่พอร์ต 9000 และรหัสแอปพลิเคชันของฉัน เว็บคือ nginx ที่มีการตั้งค่าบิตน้อย ฟังก์ชั่นนี้เป็นไปตามที่ฉันคาดหวังอย่างไรก็ตามเพื่อเชื่อมต่อ nginx กับ php-fpm ฉันมีบรรทัดนี้: fastcgi_pass app:9000; ฉันจะขยายขนาดนี้ได้อย่างมีประสิทธิภาพได้อย่างไร ตัวอย่างเช่นถ้าฉันต้องการให้มีหนึ่ง nginx container ที่ทำงานอยู่ แต่สาม app container ที่ใช้งานอยู่ผมจะมีอินสแตนซ์ php-fpm สามตัวที่พยายามฟังบนพอร์ต …
11 nginx  php  php-fpm  docker 

1
nginx ถ้าคำสั่งภายในตำแหน่งส่งคืน 404
บล็อกดังต่อไปนี้ location / { if ($http_origin ~* (https?://[^/]*\.example\.com(:[0-9]+)?)) { add_header 'Access-Control-Allow-Origin' "$http_origin"; } try_files $uri $uri/ /index.php?$args; } ... ทำให้ 404 เป็นรหัสข้างต้นไม่ถึงtry_filesคำสั่งดังนั้น: สิ่งนี้เกี่ยวข้องกับIfIsEvilของ nginx หรือไม่ ถ้าเป็นเช่นนั้นมีวิธีอื่นในการทดสอบhttp_originโดยไม่ใช้คำสั่ง if หรือไม่ ฉันลองสิ่งนี้ด้วย nginx> 1.4 (1.4.6, 1.7, 1.7.8)
11 nginx  cors 

2
Bittorrent แปลก ๆ บนเซิร์ฟเวอร์ของฉัน
ฉันไม่รู้ว่าบันทึกต่อไปนี้เกี่ยวข้องกับเว็บไซต์ของฉันหรือไม่ ฉันมีเว็บไซต์จำนวนมากบนเซิร์ฟเวอร์ของฉันและพวกเขาไม่มีบันทึกใด ๆ ดังต่อไปนี้: 117.169.1.85 - - [03/Jan/2015:23:21:37 +0800] "GET /announce.php?info_hash=%D0%A2M%CE%13%21H%D4%11%0C%8C%27%22%C83%B4%A3l%92%15&peer_id=%2DSD0100%2D%C50%95xmh%9B%13%7C%D42%F7&ip=39.178.24.33&port=14940&uploaded=3893629&downloaded=3893629&left=1369695469&numwant=200&key=1490&compact=1 HTTP/1.1" 404 162 "-" "Bittorrent" 115.231.228.252 - - [03/Jan/2015:23:21:37 +0800] "GET /announce.php?info_hash=%DE%82%BC%CFBmH%29e%FD%25%ED6b%F2%2DX%EE%BE%21&peer_id=%2DSD0100%2D%BF3%DAG%83%1F%DAGnV%E3%C8&ip=118.134.134.210&port=13567&uploaded=675282944&downloaded=675282944&left=80740352&numwant=200&key=7916&compact=1 HTTP/1.0" 404 162 "-" "Bittorrent" 115.231.228.252 - - [03/Jan/2015:23:21:37 +0800] "GET /announce?info_hash=%DE%82%BC%CFBmH%29e%FD%25%ED6b%F2%2DX%EE%BE%21&peer_id=%2DSD0100%2D%BF3%DAG%83%1F%DAGnV%E3%C8&ip=118.134.134.210&port=13567&uploaded=675282944&downloaded=675282944&left=80740352&numwant=200&key=16205&compact=1 HTTP/1.0" 404 20283 "-" "Bittorrent" 123.123.126.154 - - [03/Jan/2015:23:21:37 +0800] "GET /announce.php?info_hash=%AA%21U%8F%7F%BA%DC%8F%D2%A5%B5A%7B%26t%F7%2A%FF%1E%8C&peer_id=%2DSD0100%2D%91%11%E7%11G%7B%8C%EB%14Y%2B%26&ip=123.123.126.154&port=12070&uploaded=129742857&downloaded=129742857&left=85310&numwant=200&key=11590&compact=1 HTTP/1.0" 404 162 …

2
Nginx ส่ง 404 เฉพาะสคริปต์ php โดยใช้ php-fpm
ผมได้ติดตั้งเซิร์ฟเวอร์ทดสอบโดยใช้+nginx php-fpmฉันได้ลองทำสิ่งต่อไปนี้แล้ว: Nginx + Php5-fpm ไม่แสดงผลไฟล์ php nginx + php fpm -> 404 หน้า php - ไม่พบไฟล์ เมื่อเข้าถึงไฟล์ PHP nginx จะแสดงข้อผิดพลาด 404 สรุปสิ่งที่ฉันได้ลอง: การติดตั้ง การเปลี่ยนสิทธิ์ของสคริปต์ (เปลี่ยนเป็น0777) fastcgi_intercept_errors on. ตรวจสอบrootคำสั่งในระดับนี้server, และlocationlocation ~ \.php ตรวจสอบfastcgi_param SCRIPT_FILENAMEคำสั่ง เซิร์ฟเวอร์ส่งคืน 404 .phpสคริปต์เปิด (และบนเท่านั้น) ฉันสามารถเปลี่ยนชื่อพวกเขาเป็น.htmlและพวกเขาจะไม่เป็นไร ฉันจะไปเกี่ยวกับเรื่องนี้ได้อย่างไร นี่คือของฉันnginx.conf: user nginx; worker_processes 1; error_log /var/log/nginx/error.log; pid /run/nginx.pid; events …
11 nginx  php-fpm 

1
nginx ยุติการเชื่อมต่อหลังจาก 65k bytes
ฉันได้รับการกำหนดค่า nginx เป็นส่วนหน้าของแอปพลิเคชัน Python ที่ทำงานภายใต้ gunicorn แต่ nginx กำลังยุติการเชื่อมต่อหลังจากส่งข้อมูลไปแล้วประมาณ 65k ตัวอย่างเช่นฉันมีมุมมองที่มีลักษณะเช่นนี้: def debug_big_file(request): return HttpResponse("x" * 500000) แต่เมื่อฉันเข้าถึง URL นั้นผ่าน nginx ฉันจะได้รับ 65283 ไบต์เท่านั้น: $ curl https://example.com/debug/big-file | wc … curl: (18) transfer closed with outstanding read data remaining 0 1 65283 โปรดทราบว่าทุกอย่างทำงานได้ตามที่คาดไว้เมื่อเข้าถึง gunicorn โดยตรง: $ curl http://localhost:1234/debug/big-file | wc …
11 nginx  gunicorn 

1
หมุนไฟล์บันทึกด้วยตนเอง
ฉันมีเว็บเซิร์ฟเวอร์ Ubuntu ที่ใช้งาน Nginx ฉันไม่เคยกำหนดค่าการหมุนเวียนล็อกไฟล์และเพิ่งค้นพบไฟล์บันทึกแบบเสาหินขนาดหลายกิกะไบต์ ผมได้กำหนดค่าการหมุนเข้าสู่ระบบในขณะนี้ต่อเคล็ดลับเหล่านี้ อย่างไรก็ตามฉันไม่ควรรอหนึ่งสัปดาห์ (ช่วงการหมุนของฉัน) ก่อนที่จะเกิดการหมุน มีวิธีบังคับหมุนเฉพาะไฟล์เฉพาะหรือไฟล์ทั้งหมดที่ระบุโดยการlogrotateกำหนดค่าหรือไม่

1
ปัญหาในการติดตั้งใบรับรอง SSL บน nginx ด้วยคีย์กลาง
ฉันกำลังพยายามติดตั้งใบรับรอง SSL บนเซิร์ฟเวอร์ Ubuntu ของฉัน ฉันซื้อใบรับรองจาก CA ของฉันและได้ดาวน์โหลดใบรับรองเองและใบรับรองระดับกลาง ดังนั้น: ใบรับรองของฉัน: mydomain.crt ใบรับรองระดับกลาง: GandiStandardSSLCA.pem ฉันยังมี (ทำโดยใช้ openssl) รหัสส่วนตัวของฉัน (?): mydomain.key และคำขอลงนาม: mydomain.csr ฉันได้อัปโหลดไฟล์เหล่านี้ทั้งหมดไปยังเซิร์ฟเวอร์ของฉันและปฏิบัติตามคำแนะนำเพื่อรวมใบรับรองของฉันกับสื่อกลาง: cat mydomain.crt GandiStandardSSLCA.pem > mydomain-bundle.crt ฉันจะเพิ่มสิ่งต่อไปนี้ในการกำหนดค่าของ vhost listen 443 ssl; ssl_certificate /etc/nginx/ssl/mydomain-bundle.crt; ssl_certificate_key /etc/nginx/ssl/mydomain.key; แต่เมื่อฉันไปรีสตาร์ท nginx ฉันได้รับข้อผิดพลาดนี้: * การรีสตาร์ท nginx * การหยุด nginx nginx [OK] nginx: [ฉุกเฉิน] SSL_CTX_use_PrivateKey_file: …
11 nginx  ssl 

5
ฉันจะหยุด nginx จากการลองคำขอ PUT หรือ POST อีกครั้งในการหมดเวลาของเซิร์ฟเวอร์ upstream ได้อย่างไร
เราใช้ nginx เพื่อโหลดคำร้องขอไปยังแอปพลิเคชันของเรา เราพบว่า nginx สลับไปยังเซิร์ฟเวอร์อัปสตรีมอื่นเมื่อขอหมดเวลา (ดี) อย่างไรก็ตามการทำเช่นนี้สำหรับคำขอ PUT และ POST ซึ่งอาจทำให้เกิดผลลัพธ์ที่ไม่พึงประสงค์ (ข้อมูลถูกเก็บไว้สองครั้ง) เป็นไปได้หรือไม่ที่จะกำหนดค่า nginx ให้ลองใช้คำขอ GET อีกครั้งเมื่อหมดเวลา หรือมีวิธีอื่นในการแก้ปัญหาหรือไม่ การกำหนดค่าของเรามีดังนี้: upstream mash { ip_hash; server 127.0.0.1:8081; server 192.168.0.11:8081; } server { ... location / { proxy_pass http://mash/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

3
node.js, Mongodb, Redis, การลดลงของประสิทธิภาพของ Ubuntu ในการผลิต, RAM ฟรี, CPU 100%
ตามที่ชื่อคำถามแสดงว่าฉันมีเวลายากที่จะทราบว่าสามารถปรับปรุงอะไรในแอปพลิเคชันของฉัน (หรือปรับในระบบปฏิบัติการ, Ubuntu) เพื่อให้ได้ประสิทธิภาพที่ยอมรับได้ แต่ก่อนอื่นฉันจะอธิบายสถาปัตยกรรม: เซิร์ฟเวอร์ front-end เป็นเครื่อง 8 คอร์ที่มี 8 gigs RAM ใช้งาน Ubuntu 12.04 แอปพลิเคชั่นเขียนทั้งหมดใน javascript และทำงานใน node.js v 0.8.22 (เนื่องจากโมดูลบางตัวดูเหมือนจะบ่นกับโหนดเวอร์ชั่นใหม่กว่า) ฉันใช้ nginx 1.4 ถึงปริมาณการรับส่งข้อมูลพร็อกซี HTTP จากพอร์ต 80 และ 443 ถึง 8 คนทำงานโหนดที่จัดการ และเริ่มใช้โหนดคลัสเตอร์ api ฉันใช้ socket.io เวอร์ชันล่าสุด 0.9.14 เพื่อจัดการการเชื่อมต่อ websocket ซึ่งฉันได้เปิดใช้งานเฉพาะ websockets และ xhr-polling เป็นการขนส่งที่มีอยู่ ในเครื่องนี้ฉันยังใช้งาน Redis …

2
Nginx Rewrite แปลง Querystring เป็น Path
ฉันต้องการกฎการเขียนซ้ำง่าย ๆ นี้: /somefolder/mypage.aspx?myid=4343&tab=overview ที่จะเปลี่ยนเส้นทางไปที่: /folder/4343/overview/ ฉันมองหาวิธีแก้ปัญหาและไม่มีใครทำงานได้จริง .. ฉันเหนื่อย: rewrite ^/somefolder/mypage.aspx?myid=(.*)&tab=overview$ /folder/$1/overview permanent; และ rewrite ^/somefolder/mypage\.aspx\?myid=(.*)&tab=overview$ /folder/$1/overview permanent; ผมทำอะไรผิดหรือเปล่า? ฉันได้รับ 404 (กฎที่ง่ายกว่าทำงานได้ดี .. ) ขอบคุณ

2
Nginx + PHP-FPM สร้างเกตเวย์ที่ไม่ดี 502 ข้อผิดพลาดร้ายแรงหรือไม่
ฉันกำลังทดสอบ Symfony2 กับ Nginx และ PHP-FPM ฉันยังใช้ Xdebug Symfony2 มาพร้อมกับชุดสาธิตฉันต้องการทดสอบการจัดการข้อผิดพลาดร้ายแรงซึ่งมาพร้อมกับ Symfony 2.2.0 ใหม่โดยการสร้างข้อผิดพลาดทางไวยากรณ์ในชุด Acme / Demo ทำไมฉันถึงทำเช่นนั้นการตอบสนองของเซิร์ฟเวอร์คือเกตเวย์ที่ไม่ดี 502 แต่ถ้าฉันทำข้อผิดพลาดทางไวยากรณ์ในไฟล์ app_dev.php (ดังนั้นก่อนที่เฟรมเวิร์กจะเริ่มทำงาน) Xdebug จะบอกฉันเกี่ยวกับข้อผิดพลาดร้ายแรง และน่าประหลาดใจถ้าฉันแก้ไขข้อผิดพลาดนั้นจากนั้นสร้างข้อผิดพลาดทางไวยากรณ์ในชุดข้อมูล Acme / Demo ใหม่ตัวจัดการข้อผิดพลาด Symfony จะปรากฏขึ้นตามที่คาดไว้ และในที่สุดถ้าแก้ไขข้อผิดพลาดทั้งหมด (ใช้งานได้ในหน้า) แล้วสร้างตัวพิมพ์เดียวกันอีกครั้ง (อีกครั้งใน Acme / Bundle) ฉันจะได้รับเกตเวย์ที่ไม่ดี คุณมีเงื่อนงำเกี่ยวกับเรื่องนี้หรือไม่?
11 php  nginx  php-fpm  xdebug  symfony 

3
ฉันจะกำหนดค่า nginx ให้ส่งคืนรหัส http 429 เมื่อ จำกัด อัตราได้อย่างไร
ฉันจะกำหนดค่า nginx เพื่อส่งคืนรหัสสถานะ http 429 (คำขอมากเกินไป) แทนค่าเริ่มต้น 503 (ไม่พร้อมใช้งานบริการ) เมื่อ จำกัด ปริมาณ / อัตราได้อย่างไร FYI ฉันใช้ nginx เป็น reverse proxy กับ HttpLimitReqModule ข้อมูลจำเพาะร่าง 429 รหัสสถานะเป็นRFC6585 คำถาม (ปิด) นี้ของstackexchanged แสดงว่าเป็นไปได้ที่จะใช้error_page directive อย่างไรก็ตามฉันไม่ต้องการส่งคืน 429 หากมีปัญหาเซิร์ฟเวอร์จริง ๆ (ไม่ใช่ลูกค้าที่ตีเรามากเกินไป) และเซิร์ฟเวอร์ควรส่งคืน 503 Service Unavailable ข้อเสนอแนะใด ๆ

1
Nginx 1.2.2: วิธีทำให้ try_files ทำงานได้อย่างไร
ฉันอัปเดต nginx เป็นเวอร์ชัน 1.2.2 เมื่อเร็ว ๆ นี้และดูเหมือนว่ารายการต่อไปนี้จะใช้งานไม่ได้ มีการเปลี่ยนแปลงทางไวยากรณ์ระหว่างเวอร์ชันหรือไม่ location / { # First attempt to serve request as file, then # as directory, then fall back to index.html try_files $uri /index.html; } เมื่อเบราว์เซอร์ของฉันไปที่http://www.mysite.com/a-non-existent-urlฉันได้รับการเปลี่ยนเส้นทางไปยังหน้าข้อผิดพลาด "500 Internal Server Error" ทำรายการบันทึกต่อไปนี้ 2012/08/13 09:20:29 [error] 18457#0: *60 rewrite or internal redirection cycle while internally …
11 nginx  redirect 

1
คำสั่ง add_header ในการแทนที่ตำแหน่งคำสั่ง add_header ในเซิร์ฟเวอร์
ใช้nginx 1.2.1ฉันสามารถเพิ่มหลายส่วนหัวโดยใช้add_headerดังนี้: server { listen 80; server_name localhost; root /var/www; add_header Name1 Value1; <=== HERE add_header Name2 Value2; <=== HERE location / { echo "Nginx localhost site"; } } ผลลัพธ์ GET / HTTP/1.1 200 OK Name1: Value1 Name2: Value2 อย่างไรก็ตามฉันทันทีที่ฉันใช้add_headerคำสั่งภายในคำสั่งlocationอื่นadd_headerภายใต้serverจะถูกละเว้น server { listen 80; server_name localhost; root /var/www; add_header Name1 …


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