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

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

4
วิธี จำกัด Nginx Auth_Basic ให้ลองใหม่อีกครั้ง
ฉันปกป้องเว็บโฟลเดอร์ด้วยโมดูล Auth_Basic ของ Nginx ปัญหาคือเราสามารถลองรหัสผ่านหลาย ๆ จนกว่ามันจะใช้งานได้ (การโจมตีแบบเดรัจฉานบังคับ) มีวิธี จำกัด จำนวนครั้งที่พยายามล้มเหลวอีกครั้งหรือไม่
14 security  nginx 

1
ข้อผิดพลาด nginx pcre_compile เมื่อใช้ปริมาณ
ฉันมีปัญหากับนามแฝง ฉันต้องการต่อท้ายตัวเลข 4 หลักแรกของไฟล์เป็นส่วนหนึ่งของไดเรกทอรี (เช่น '../123456.jpg'=>'../123/123456.jpg' และ '../12.png'=>'../12/12.png') นี่คือสิ่งที่ฉันมี: location ~ ^/i/gallery2/(\d{1,4})(.*)$ { alias /home/web/images/gallery/$1/$1$2; } นี่เป็นข้อผิดพลาดที่ฉันได้รับ: nginx: [emerg] pcre_compile() failed: missing ) in "^/i/gallery2/(\d" ใครมีความคิดวิธีการทำงานนี้ ดูเหมือนว่าจะมีปัญหากับ "{1,4}" มีวิธีอื่นอีกไหมที่ฉันต้องการ
14 nginx  regex 

5
Nginx ฉันจะปฏิเสธคำขอไปยังเซิร์ฟเวอร์เสมือน ssl ที่ไม่แสดงรายการได้อย่างไร
ฉันมีใบรับรองไวด์การ์ด SSL และโดเมนย่อยหลายรายการใน IP เดียวกัน ตอนนี้ฉันต้องการให้ nginx ของฉันจัดการเฉพาะชื่อเซิร์ฟเวอร์ที่กล่าวถึงและการเชื่อมต่อแบบหล่นสำหรับผู้อื่นเพื่อให้ดูเหมือนว่า nginxไม่ทำงานสำหรับชื่อเซิร์ฟเวอร์ที่ไม่แสดง (ไม่ตอบสนองปฏิเสธปฏิเสธไม่ใช่หนึ่งไบต์ในการตอบสนอง) ฉันทำต่อไปนี้ ssl_certificate tls/domain.crt; ssl_certificate_key tls/domain.key; server { listen 1.2.3.4:443 ssl; server_name validname.domain.com; // } server { listen 1.2.3.4:443 ssl; server_name _; // deny all; // return 444; // return 404; //location { // deny all; //} } ฉันได้ลองเกือบทุกอย่างในบล็อกเซิร์ฟเวอร์ล่าสุด แต่ไม่สำเร็จ ฉันได้รับการตอบสนองที่ถูกต้องจากเซิร์ฟเวอร์เสมือนที่รู้จักหรือรหัสข้อผิดพลาด …

2
การแสดงจุดปลายพร็อกซีหลายรายการภายใต้ตำแหน่งใน Nginx
ฉันมีจุดปลาย API สองสามอย่างที่ฉันต้องการให้บริการจากตำแหน่งเดียวของที่/apiมีพา ธ ย่อยไปยังจุดปลายที่แตกต่างกัน โดยเฉพาะฉันต้องการ webdis จะสามารถใช้ได้ใน/apiและ API /api/mypathที่เป็นกรรมสิทธิ์ที่มีอยู่ใน ฉันไม่กังวลเกี่ยวกับการปะทะกันกับ webdis API เพราะฉันใช้ subpaths ซึ่งไม่น่าจะขัดแย้งกับชื่อคำสั่ง redis และยังสามารถควบคุมการออกแบบ API ได้อย่างสมบูรณ์เพื่อหลีกเลี่ยงการปะทะกัน นี่คือไฟล์กำหนดค่าจากเซิร์ฟเวอร์ทดสอบของฉันที่ฉันแฮ็ค: server { listen 80; server_name localhost; server_name 192.168.3.90; server_name 127.0.0.1; location / { root /home/me/src/phoenix/ui; index index.html; } # temporary hardcoded workaround location = /api/mypath/about { proxy_pass http://localhost:3936/v1/about; } …

2
คุณสามารถกำหนดตำแหน่งของเซิร์ฟเวอร์ในไฟล์กำหนดค่า nginx หลายไฟล์ได้หรือไม่?
ฉันมีแอพ ruby ​​หลายตัวที่ทำงานบนโฮสต์เดียวกัน: ~/app1 ~/app2 ~/app3 และฉันต้องการให้พร็อกซี nginx แอปเหล่านี้ใช้ไดเรกทอรีย่อยเช่น: http://example.com/app1 http://example.com/app2 http://example.com/app3 ฉันอยากรู้ว่า nginx สนับสนุนให้ฉันสามารถกำหนดตำแหน่งเหล่านี้ในหลาย ๆ ไฟล์ได้หรือไม่เพื่อให้ฉันสามารถกำหนดค่าแต่ละแอปด้วยแอปแทนการมีไฟล์กำหนดค่าเสาหินเดียวสำหรับแอพทั้งหมด: ~/app1/nginx.conf ~/app2/nginx.conf ~/app3/nginx.conf ความพยายามที่ไร้เดียงสาของฉันในการกำหนดเซิร์ฟเวอร์ด้วยคำสั่งตำแหน่งที่ตั้งเดียวในแต่ละไฟล์กำหนดค่า 3 ไฟล์นำไปสู่การกำหนดconflicting server name "example.com" on [::]:80, ignoredค่าที่มีลักษณะดังนี้: upstream app1 { server 127.0.0.1:4567; } server { listen [::]:80; listen 80; servername example.com location /app1 { proxy_pass http://app1; proxy_http_version 1.1; …
14 nginx 

1
Nginx การตรวจสอบไคลเอ็นต์ certs เฉพาะตำแหน่งที่ระบุเท่านั้น
เราใช้ Nginx เป็น reverse proxy ไปยังเว็บแอพพลิเคชันเซิร์ฟเวอร์ของเรา Nginx จัดการ SSL ของเราและเช่นนั้นทำหน้าที่เป็น reverse proxy เราต้องการใบรับรองลูกค้าที่ถูกต้องสำหรับคำขอ/jsonrpcแต่ไม่ต้องการที่อื่น วิธีที่ดีที่สุดที่เราพบคือ server { listen *:443 ssl; ssl on; ssl_certificate /etc/nginx/server.crt; ssl_certificate_key /etc/nginx/server.key; ssl_client_certificate /etc/nginx/client-ca.crt; ssl_verify_client optional; location /jsonrpc { if ($ssl_client_verify != "SUCCESS") { return 403; } proxy_pass http://localhost:8282/jsonrpc-api; proxy_read_timeout 90; proxy_redirect http://localhost/ $scheme://$host:$server_port/; } } สิ่งนี้ใช้ได้ดีกับเบราว์เซอร์ส่วนใหญ่ …

4
การลบเครื่องหมายสแลชต่อท้ายออกจาก URL ด้วย nginx
ฉันต้องการให้ URL ต่อไปนี้ในเว็บไซต์ของฉันเท่ากัน: /foo/bar /foo/bar/ /foo/bar/index.html และต่อไปฉันต้องการให้สองรูปแบบที่สองเพื่อออก HTTP 301 redirects ไปยังแบบฟอร์มแรก ฉันแค่ให้บริการหน้าคงที่และพวกเขาจะจัดเรียงตามรูปแบบที่สาม (กล่าวอีกนัยหนึ่งเมื่อผู้ใช้ร้องขอ/foo/barพวกเขาควรได้รับไฟล์ที่/usr/share/.../foo/bar/index.html) nginx.confปัจจุบันของฉันมีดังต่อไปนี้: rewrite ^(.+)/$ $1 permanent; index index.html; try_files $uri $uri/index.html =404; สิ่งนี้ใช้ได้กับคำขอ/foo/bar/index.htmlแต่เมื่อฉันร้องขอ/foo/barหรือ/foo/bar/Safari บอกฉันว่า“ เกิดการเปลี่ยนเส้นทางมากเกินไป” - ฉันถือว่ามีลูปการเปลี่ยนเส้นทางที่ไม่สิ้นสุดหรืออะไรทำนองนั้น ฉันจะรับ nginx เพื่อจับคู่ URL กับไฟล์ในแบบที่ฉันอธิบายได้อย่างไร แก้ไข: การกำหนดค่าเต็มของฉัน นี่คือทั้งหมดของฉันnginx.confด้วยชื่อโดเมนของฉันแทนที่ด้วย“ example.com” user www-data; worker_processes 1; pid /run/nginx.pid; events { worker_connections 768; } http …
14 nginx 

4
วิธีการทำซ้ำข้อมูล nginx ไปยังเซิร์ฟเวอร์สองเครื่องอย่างไร
ฉันพยายามจำลองทราฟฟิกที่เซิร์ฟเวอร์ nginx หนึ่งเซิร์ฟเวอร์ได้รับไปยังเซิร์ฟเวอร์สองเครื่อง เป้าหมายไม่ได้เป็นการโหลดบาลานซ์ แต่จะเล่นอินพุตเดียวกันซ้ำบนเซิร์ฟเวอร์ nginx ทั้งหมด ตัวอย่าง: Nginx รับ HTTP POST ฉันต้องการส่ง POST เดียวกันนี้ไปยังเซิร์ฟเวอร์อื่น ** อัพเดท ** สถานการณ์เป็นเรื่องง่ายและไม่ซับซ้อน ฉันแค่ต้องส่งข้อมูล POST (หรือ GET หรือข้อมูลการร้องขอใด ๆ ) ไปยังเซิร์ฟเวอร์ IP อื่น (มันยังทำงานอินสแตนซ์ nginx) แค่นี้แหละ USER -> POST DATA -> NGINX INSTANCE ---- REDIRECT ---> เซิร์ฟเวอร์ 1 และเซิร์ฟเวอร์ 2
14 nginx  ab 

2
วิธีย้อนกลับพร็อกซีไปยังสถานที่ต่างกันโดยขึ้นอยู่กับโดเมนย่อยใน Nginx
ฉันมีหลายโดเมนย่อยทั้งหมดชี้ไปที่เครื่องหนึ่งและที่อยู่ IP หนึ่งแห่ง บนเครื่องนี้ฉันต้องการให้ nginx ทำหน้าที่เป็น reverse proxy และขึ้นอยู่กับว่าใช้โดเมนย่อยใดในการเข้าถึงเครื่องฉันต้องการให้ reverse proxy ไปยังเซิร์ฟเวอร์อื่น ตัวอย่างทั้งหมดที่ฉันเห็นว่าใช้ nginx เป็น reverse proxy ใช้locationแต่เท่าที่ฉันเข้าใจว่าใช้งานได้กับพา ธ เท่านั้นไม่ใช่โดเมนย่อยที่ต่างกัน ฉันจะบรรลุสิ่งที่ฉันต้องการได้อย่างไร

5
พร็อกซี Nginx สำหรับแบ็คเอนด์ที่มีการตรวจสอบความถูกต้องใบรับรองไคลเอ็นต์ SSL
ฉันมีสองเซิร์ฟเวอร์ทั้งคู่มี nginx เซิร์ฟเวอร์ A กำลังรับฟัง 443 และได้รับการกำหนดค่าให้ตรวจสอบสิทธิ์ด้วยใบรับรอง SSL ของไคลเอ็นต์ เซิร์ฟเวอร์ B มีกระบวนการภายในที่ต้องสื่อสารกับเซิร์ฟเวอร์ A ถึง nginx ฉันต้องการกำหนดค่า Nginx บนเซิร์ฟเวอร์ B ที่จะรับฟัง 8080 (ไม่มีการเข้ารหัสเนื่องจากเป็นการสื่อสารในท้องถิ่นทั้งหมด) และ proxy_pass เป็น ServerA: 443 คำถามคือฉันจะฉีดใบรับรองลูกค้าได้อย่างไร ฉันไม่พบฟังก์ชัน proxy_xxxx ใด ๆ ที่จะทำเช่นนั้น ฉันรู้วิธีทำให้เทียบเท่ากับ socat แต่ความต้องการของฉันคือใช้ nginx

2
ทำไม 14 อักขระถึงความยาวสูงสุดสำหรับคำสั่ง nginx server_name?
ฉันมีโฮสต์เสมือนต่อไปนี้ server { server_name abc.example.com; root /var/www/test/; index index.html; } เมื่อทำงานnginx -s reloadฉันได้รับข้อผิดพลาดต่อไปนี้: nginx: [ฉุกเฉิน] ไม่สามารถสร้าง server_names_hash คุณควรเพิ่ม server_names_hash_bucket_size: 32 เกิดขึ้นเช่นเดียวกันสำหรับชื่อเซิร์ฟเวอร์ใด ๆ ที่มี 15 อักขระขึ้นไป หากฉันตั้งค่า server_name เป็นab.example.com(หรือชื่อใด ๆ ที่มีความยาวต่ำกว่า 15 อักขระ) ปัญหาจะหยุดแสดง ในการแก้ไขปัญหานี้ฉันได้เพิ่มสิ่งต่อไปนี้ใน/etc/nginx/nginx.conf(ไม่ได้กำหนดไว้ก่อนหน้านี้): server_names_hash_bucket_size 64; ตั้งค่าเป็น 33 ใช้งานได้เช่นกัน แต่ไม่ใช่ 32 ทำไมความยาวสูงสุด 14 อักขระเริ่มต้นสำหรับ server_name คืออะไร ข้อ จำกัด นี้กำหนดโดยค่าเริ่มต้นของ nginx …

1
การส่งข้อมูลโปรโตคอล SSL เพื่อแบ็กเอนด์ผ่านส่วนหัว HTTP
หลังจากช่องโหว่ของพุดเดิ้ลถูกเปิดเผยเมื่อเร็ว ๆ นี้ทีมของเราตัดสินใจที่จะดำเนินการต่อจาก SSLv3 แต่ก่อนที่จะกำจัดสมบูรณ์พวกเขาต้องการที่จะเตือนผู้ใช้งานในชีวิตประจำวันที่ใช้เบราว์เซอร์ของพวกเขาเลิก SSLv3 ดังนั้นเราจึงเกิดแนวคิดขึ้นมา ตรวจจับโปรโตคอล (SSLv3, TLS1 และอื่น ๆ ... ) จาก front-offloading การถ่าย SSL (เราใช้ nginx) ส่งข้อมูลนั้น (โปรโตคอล SSL) ผ่านส่วนหัว HTTP ไปยัง Apache-backend แล้วรหัสแบ็กเอนด์ของเราจะดำเนินการที่ส่วนหัวและให้คำเตือนถ้าลูกค้าใช้ SSLv3 ผมทราบว่า Nginx proxy_set_headerมีคุณสมบัติ ดังนั้นอันนี้จะง่ายเหมือน proxy_set_header X-HTTPS-Protocol $something; ตอนนี้ปัญหาคือ: เห็นได้ชัดว่า nginx รู้จักโปรโตคอลที่ลูกค้าใช้ แต่ฉันจะส่งข้อมูลนั้นเพื่อแบ็กเอนด์ผ่านส่วนหัว HTTP ได้อย่างไร ขอบคุณ ตามที่ชี้โดยผู้ใช้ Apache ที่คล้ายกันในเธรดถ้าพวกเขาใช้ SSLv3แนวคิดนี้อาจกลายเป็นความคิดที่แย่มาก เหตุผลคือการจับมือกันของ TLS …
13 nginx  ssl  poodle 

3
ฉันจะเปิดใช้งานการบีบอัด gzip บนทรัพยากรโมดูล NGINX PageSpeed ​​ได้อย่างไร
ฉันมุ่งเน้นไปที่การปรับเว็บไซต์ให้เหมาะสมเพื่อให้ได้คะแนน 100 ในเครื่องมือ Google PageSpeed ​​Insights (สำหรับมือถือและเดสก์ท็อป) รายการส่วนใหญ่ทำงานได้อย่างไร้ที่ติ แต่ฉันยังได้รับคำเตือน "เปิดใช้การบีบอัด" สำหรับเว็บไซต์ สิ่งนี้เป็นปัญหาเนื่องจาก gzip เปิดใช้งานบนเซิร์ฟเวอร์ของฉันและทรัพยากรที่ให้บริการที่ไม่ได้รับการบีบอัดนั้นมาจากโมดูล NGINX PageSpeed ฉันผ่านหน้าการกำหนดค่าบนเว็บไซต์ของ Google แล้ว แต่ไม่มีสิ่งใดที่อธิบายถึงวิธีการเปิดใช้งานการบีบอัดนอกเหนือจากการกำหนดค่า NGINX ทั่วไปที่มีอยู่แล้ว คำถามของฉันคือ: ฉันจะเปิดใช้งานการบีบอัด gzip เพื่อให้สามารถใช้งานได้กับทรัพยากรของเพจที่มีความเร็วได้อย่างไร การตั้งค่าเซิร์ฟเวอร์ของฉัน: Ubuntu 12.0.4.3 LTS NGINX - คอมไพล์ที่กำหนดเอง 1.5.4 พร้อมโมดูล PageSpeed ​​1.6.29.5 เบต้า การกำหนดค่าเซิร์ฟเวอร์ NGINX: user www-data; #set worker processes to cpu processes worker_processes 4; …

3
nginx failover โดยไม่มี load balance
ฉันมีปัญหาในการกำหนดค่า nginx ฉันใช้ nignx เป็น reverse proxy ฉันต้องการส่งคำขอทั้งหมดไปยังเซิร์ฟเวอร์เครื่องแรก หากเซิร์ฟเวอร์แรกไม่ทำงานฉันต้องการส่งคำขอไปยังเซิร์ฟเวอร์ที่สอง กล่าวโดยย่อฉันจะมีวิธีแก้ไขปัญหาความล้มเหลวได้อย่างไรโดยไม่ต้องทำโหลดบาลานซ์?

2
nginx เขียนซ้ำหรือเปลี่ยนเส้นทางภายใน
ฉันต่อสู้กับหัวของฉันกับตารางพยายามที่จะคิดออกว่าอะไรเป็นสาเหตุของวงจรการเปลี่ยนเส้นทางในการกำหนดค่า nginx ของฉันเมื่อพยายามเข้าถึง URL ที่ไม่มีอยู่การกำหนดค่าไปดังนี้: server { listen 127.0.0.1:8080; server_name .somedomain.com; root /var/www/somedomain.com; access_log /var/log/nginx/somedomain.com-access.nginx.log; error_log /var/log/nginx/somedomain.com-error.nginx.log debug; location ~* \.php.$ { # Proxy all requests with an URI ending with .php* # (includes PHP, PHP3, PHP4, PHP5...) include /etc/nginx/fastcgi.conf; } # all other files location / { root /var/www/somedomain.com; …
13 nginx 

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