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

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

6
วิธีการเริ่ม nginx ใหม่
สำหรับฉันฉันเรียกใช้ "killall nginx" และเริ่มต้นด้วย "sbin / nginx" ทุกคนมีสคริปต์รีสตาร์ทที่ดีกว่า BTW: ฉันติดตั้ง nginx จากซอร์สฉันไม่พบคำสั่ง 'service nginx' หรือ /etc/init.d/nginx
95 nginx  redhat 

7
ทำ nginx เพื่อส่งชื่อโฮสต์ของ upstream เมื่อทำการย้อนหน้า
ฉันเรียกใช้คอนเทนเนอร์นักเทียบท่าที่มีชื่อโฮสต์: web1.local web2.local web3.local การกำหนดเส้นทางไปยังสิ่งเหล่านี้ทำได้ตามชื่อโฮสต์โดย nginx ฉันมีพร็อกซีที่หน้าการตั้งค่านี้ (บนเครื่องที่แตกต่างกันที่เชื่อมต่อกับอินเทอร์เน็ต) ที่ฉันกำหนด upstream เป็น: upstream main { server web1.local:80; server web2.local:80; server web3.local:80; } และคำอธิบายโฮสต์เสมือนจริง: server { listen 80; server_name example.com; location / { proxy_pass http://main; } } ขณะนี้เนื่องจากคอนเทนเนอร์ได้รับชื่อโฮสต์ "main" แทน "web1.local" จึงไม่ตอบสนองต่อคำขออย่างถูกต้อง คำถาม: ฉันจะบอก nginx ให้ส่งชื่อของเซิร์ฟเวอร์ upstream แทนที่จะเป็นชื่อของกลุ่ม upstream ของเซิร์ฟเวอร์ใน Host: header …

5
ปิดใช้งานการแคชเมื่อให้บริการไฟล์คงที่ด้วย Nginx (เพื่อการพัฒนา)
เรากำลังใช้ Nginx เพื่อให้บริการไฟล์คงที่บนแพลตฟอร์มการพัฒนา เนื่องจากเป็นแพลตฟอร์มการพัฒนาเราจึงต้องการปิดใช้งานการแคชเพื่อให้การเปลี่ยนแปลงแต่ละครั้งถูกส่งไปยังเซิร์ฟเวอร์ การกำหนดค่าของ VHost นั้นค่อนข้างง่าย: server { server_name static.server.local; root /var/www/static; ## Default location location / { access_log off; expires 0; add_header Cache-Control private; } } เมื่อเราเข้าถึงไฟล์ HTML ( http: //static.server.local/test.html ) เราไม่มีปัญหา: เซิร์ฟเวอร์จะส่งคืนรหัส304 ไม่ถูกแก้ไขตราบใดที่ไฟล์ไม่เปลี่ยนแปลงและมีการตอบสนอง200 OKด้วย ไฟล์ที่แก้ไขเมื่อไฟล์ถูกเปลี่ยน อย่างไรก็ตามดูเหมือนว่าจะทำงานแตกต่างจาก Javascript หรือไฟล์ CSS เมื่อไฟล์มีการเปลี่ยนแปลงเราจะได้รับการตอบสนอง200 OKตามที่คาดไว้ แต่มีข้อความเก่า มีกลไกแคชภายในใน Nginx ที่สามารถอธิบายพฤติกรรมนี้ได้หรือไม่? หรือการกำหนดค่าบางอย่างที่เราควรเพิ่ม? …

7
เชื่อมต่อ () ล้มเหลว (111: การเชื่อมต่อถูกปฏิเสธ) ขณะเชื่อมต่อกับอัปสตรีม
ฉันพบ502 Gatewayข้อผิดพลาดเมื่อเข้าถึงไฟล์ PHP ในไดเรกทอรี ( http://example.com/dev/index.php) บันทึกนั้นบอกว่า: 2011/09/30 23:47:54 [error] 31160#0: *35 connect() failed (111: Connection refused) while connecting to upstream, client: xx.xx.xx.xx, server: domain.com, request: "GET /dev/ HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "domain.com" ฉันไม่เคยมีประสบการณ์แบบนี้มาก่อน วิธีการแก้ไข502 Gatewayข้อผิดพลาดประเภทนี้คืออะไร? นี่คือnginx.conf: user www-data; worker_processes 4; pid /var/run/nginx.pid; events { worker_connections 768; # multi_accept on; …
85 nginx  502-error 


2
เป็นไปได้ไหมที่จะทำให้ Nginx รับฟังพอร์ตต่าง ๆ ?
ฉันสร้าง Nginx หนึ่งตัวด้วย Linux Azure VM หนึ่งตัวเป็นไปได้หรือไม่ที่จะทำให้ nginx ฟังพอร์ตต่าง ๆ ดังนั้นเมื่อฉันเปลี่ยนหมายเลขพอร์ตเนื้อหาจะแตกต่างกัน ฉันพบว่าอาจมีการขัดแย้งกันหากฉันสร้างสองพอร์ตขึ้นไปที่เกี่ยวข้องกับ HTTP บน VM มีใครช่วยฉันได้บ้าง

14
Nginx 1 FastCGI ส่งเป็น stderr:“ ไม่รู้จักสคริปต์หลัก”
ครั้งแรกที่ฉันใช้ Nginx แต่ฉันคุ้นเคยกับ Apache และ Linux มากกว่า ฉันใช้โครงการที่มีอยู่และเมื่อฉันพยายามดู index.php ฉันไม่พบไฟล์ 404 นี่คือรายการ access.log: 2013/06/19 16:23:23 [error] 2216#0: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.ordercloud.lh" และนี่คือไฟล์ที่มีในเว็บไซต์: server { set $host_path "/home/willem/git/console/www"; access_log …
81 nginx  php-fpm 

8
ฉันสามารถซ่อนข้อมูลเซิร์ฟเวอร์ / ระบบปฏิบัติการทั้งหมดได้หรือไม่
ฉันไม่ต้องการให้ใครตรวจพบว่าฉันกำลังใช้ NGINX หรือ Ubuntu จากอินเทอร์เน็ต มีเครื่องมือออกมา (เช่น BuiltWith) ซึ่งจะสแกนเซิร์ฟเวอร์เพื่อตรวจสอบว่ามีเครื่องมือใดบ้างที่ใช้อยู่ นอกจากนี้เครื่องมือถอดรหัสบางตัวอาจช่วยในการตรวจจับ อะไรคือสิ่งที่ดีที่สุด / ใกล้เคียงที่สุดที่ฉันสามารถซ่อนข้อมูลทั้งหมดนี้จากข้างนอก?
80 nginx  ubuntu 

4
วิธีลบพา ธ ด้วย nginx proxy_pass
ฉันมีการเรียกใช้เว็บแอพลิเคชันที่http://example.com/และต้องการที่จะ "ติด" http://example.com/enโปรแกรมประยุกต์อื่นบนเซิร์ฟเวอร์ที่แยก เซิร์ฟเวอร์อัปสตรีมและproxy_passดูเหมือนจะใช้งานได้ แต่มีปัญหาเดียว: upstream luscious { server lixxxx.members.linode.com:9001; } server { root /var/www/example.com/current/public/; server_name example.com; location /en { proxy_pass http://luscious; } } เมื่อเปิดexample.com/enแอปพลิเคชันอัปสตรีมของฉันจะกลับ404 not found /enมา /enนี้ทำให้รู้สึกเป็นต้นน้ำไม่ได้มีเส้นทาง เป็นproxy_pathทางออกที่เหมาะสม? ฉันควรเขียนใหม่ "upstream" เพื่อฟัง/enแทนหรือไม่เนื่องจากเป็นเส้นทางของรูท หรือมีคำสั่งที่อนุญาตให้ฉันเขียนเส้นทางที่ส่งผ่านไปยังต้นน้ำหรือไม่
77 nginx  path  proxypass 


2
try_files ทำงานอย่างไร
ฉันดูเอกสาร nginx และมันยังทำให้ฉันสับสนอย่างที่สุด อย่างไรtry_filesทำงานอย่างไร นี่คือสิ่งที่เอกสารบอกว่า: จาก NginxHttpCoreModule try_files ไวยากรณ์: try_files path1 [path2] uri เริ่มต้น: ไม่มี บริบท: เซิร์ฟเวอร์, ตำแหน่ง ห้องว่าง: 0.7.27 ตรวจสอบการมีอยู่ของไฟล์ตามลำดับและส่งคืนไฟล์แรกที่พบ สแลชต่อท้ายบ่งชี้ไดเรกทอรี - $ uri / ในกรณีที่ไม่พบไฟล์การเปลี่ยนเส้นทางภายในไปยังพารามิเตอร์สุดท้ายจะถูกเรียกใช้ พารามิเตอร์สุดท้ายคือทางเลือก URI และ ต้องมีอยู่มิฉะนั้นจะเกิดข้อผิดพลาดภายใน ซึ่งแตกต่างจากการเขียนใหม่ $ args จะไม่ถูกเก็บไว้โดยอัตโนมัติหากทางเลือกไม่ใช่ตำแหน่งที่ระบุชื่อ หากคุณต้องการเก็บรักษา args คุณต้องทำอย่างชัดเจน: ฉันไม่เข้าใจวิธีการตรวจสอบเส้นทางและจะทำอย่างไรหากฉันไม่ต้องการข้อผิดพลาดภายใน แต่ให้เริ่มเส้นทางที่เหลือต่อเพื่อหาไฟล์อื่น หากฉันต้องการลองใช้ไฟล์แคช/path/app/cache/url/index.htmlและหากล้มเหลวในการลอง/path/app/index.phpฉันจะเขียนมันได้อย่างไร ถ้าฉันเขียนว่า: try_files /path/app/cache/ $uri include /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket; fastcgi_param …
72 nginx 

4
คุณต้องการคำสั่งฟัง IPv4 และ IPv6 แยกกันใน nginx หรือไม่?
ฉันเห็นตัวอย่างการกำหนดค่าต่างๆสำหรับการจัดการโฮสต์เสมือน IPv4 และ IPv6 แบบดูอัลสแต็กบน nginx หลายคนแนะนำรูปแบบนี้: listen 80; listen [::]:80 ipv6only=on; เท่าที่ฉันเห็นสิ่งนี้ประสบความสำเร็จเหมือนกับ: listen [::]:80 ipv6only=off; ทำไมคุณถึงใช้อดีต เหตุผลเดียวที่ฉันคิดได้ก็คือถ้าคุณต้องการพารามิเตอร์เพิ่มเติมที่เฉพาะเจาะจงสำหรับแต่ละโปรโตคอลตัวอย่างเช่นถ้าคุณต้องการตั้งค่าdeferredบน IPv4 เท่านั้น
71 nginx  ipv6  ipv4 

4
Nginx Redirect ผ่าน Proxy, Rewrite และ Preserve URL
ใน Nginx เราพยายามเปลี่ยนเส้นทาง URL ดังนี้: http://example.com/some/path -> http://192.168.1.24 ตำแหน่งที่ผู้ใช้ยังคงเห็น URL ดั้งเดิมในเบราว์เซอร์ของตน เมื่อผู้ใช้ถูกเปลี่ยนเส้นทางกล่าวว่าพวกเขาคลิกที่ลิงค์ไป/section/index.htmlเราต้องการให้คำขอที่นำไปสู่การเปลี่ยนเส้นทาง http://example.com/some/path/section/index.html -> http://192.168.1.24/section/index.html และอีกครั้งยังคงรักษา URL เดิม ความพยายามของเราเกี่ยวข้องกับการแก้ปัญหาต่าง ๆ โดยใช้พร็อกซีและกฎการเขียนซ้ำและด้านล่างแสดงการกำหนดค่าที่ทำให้เราใกล้เคียงกับโซลูชันมากที่สุด (โปรดทราบว่านี่คือการกำหนดค่าเว็บเซิร์ฟเวอร์สำหรับexample.comเว็บเซิร์ฟเวอร์) อย่างไรก็ตามยังมีปัญหาสองข้อสำหรับสิ่งนี้: มันไม่ได้เขียนใหม่อย่างถูกต้องในที่ URL คำขอที่ได้รับจากเว็บเซิร์ฟเวอร์http://192.168.1.24รวมถึง/some/pathและดังนั้นจึงไม่สามารถให้บริการหน้าที่จำเป็น เมื่อคุณวางบนลิงค์เมื่อเพจได้รับการบริการ/some/pathหายไปจาก URL server { listen 80; server_name www.example.com; location /some/path/ { proxy_pass http://192.168.1.24; proxy_redirect http://www.example.com/some/path http://192.168.1.24; proxy_set_header Host $host; } location / { index …

6
การตั้งค่าเซิร์ฟเวอร์ nginx“ เริ่มต้น” อย่างถูกต้องสำหรับ https
ฉันมีเซิร์ฟเวอร์หลายเครื่องที่ทำงานในเครื่องเดียวกันบางเครื่องมี http เท่านั้นบางเครื่องมีทั้ง http และ https มีบล็อกเซิร์ฟเวอร์จำนวนมากที่กำหนดไว้ในไฟล์แยกต่างหากซึ่งรวมอยู่ในไฟล์กำหนดค่าหลัก ฉันได้ตั้งค่าเซิร์ฟเวอร์ "เริ่มต้น" สำหรับ http ซึ่งจะให้บริการ "หน้าการบำรุงรักษา" ทั่วไปกับคำขอที่ไม่ตรงกับชื่อ server_name อื่น ๆ ในไฟล์ config อื่น ๆ http เซิร์ฟเวอร์เริ่มต้นทำงานตามที่คาดไว้จะใช้ server_name "_" และปรากฏเป็นครั้งแรกในรายการรวม (เพราะฉันสังเกตว่าในกรณีของซ้ำ server_name ข้ามเซิร์ฟเวอร์หนึ่งที่ปรากฏก่อนใช้) มันใช้งานได้ดี ฉันคาดหวังว่าบล็อกเซิร์ฟเวอร์ที่แน่นอนเหมือนกัน (เฉพาะการสลับ "Listen 80 default_server" เป็น "Listen 443 default_server" และแทนการแสดงหน้า "return 444") อย่างไรก็ตามมันไม่ได้ แต่ดูเหมือนว่าเซิร์ฟเวอร์ https เริ่มต้นใหม่จะดึงการเชื่อมต่อ https ขาเข้าทั้งหมดและทำให้พวกเขาล้มเหลวแม้ว่าบล็อกเซิร์ฟเวอร์อื่นจะมี server_names ที่เหมาะสมกว่าสำหรับคำขอขาเข้า …
70 ssl  https  nginx 

6
ข้อผิดพลาด nginx นี้“ เขียนซ้ำหรือเปลี่ยนเส้นทางภายใน” หมายความว่าอย่างไร
tail -f /var/log/nginx/error.log 2013/05/04 23:43:35 [error] 733#0: *3662 rewrite or internal redirection cycle while internally redirecting to "/index.html", client: 127.0.0.1, server: _, request: "GET /robots.txt HTTP/1.1", host: "kowol.mysite.net" HTTP/1.1", host: "www.joesfitness.net" 2013/05/05 00:49:14 [error] 733#0: *3783 rewrite or internal redirection cycle while internally redirecting to "/index.html", client: 127.0.0.1, server: _, …
67 nginx 

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