คำถามติดแท็ก reverse-proxy

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

5
Nginx reverse proxy + URL เขียนใหม่
Nginx ทำงานบนพอร์ต 80 และฉันใช้เพื่อย้อนกลับ URL พร็อกซีด้วยพา ธ/fooไปยังพอร์ต3200ด้วยวิธีนี้: location /foo { proxy_pass http://localhost:3200; proxy_redirect off; proxy_set_header Host $host; } ใช้งานได้ดี แต่ฉันมีแอปพลิเคชันบนพอร์ต3200ซึ่งฉันไม่ต้องการ/fooให้ส่งเริ่มต้นไปที่ นั่นคือ - เมื่อฉันเข้าถึงhttp://localhost/foo/barฉันต้องการเพียง/barเป็นเส้นทางตามที่ได้รับจากแอพ ดังนั้นฉันพยายามเพิ่มบรรทัดนี้ในบล็อกตำแหน่งที่ตั้งด้านบน: rewrite ^(.*)foo(.*)$ http://localhost:3200/$2 permanent; สิ่งนี้ทำให้เกิดการเปลี่ยนเส้นทาง 302 (เปลี่ยนเป็น URL) แต่ฉันต้องการ 301 ฉันควรทำอย่างไร

13
วิธีการตั้งค่า Nginx เป็น reverse proxy แคชหรือไม่
ฉันได้ยินเมื่อเร็ว ๆ นี้ว่า Nginx ได้เพิ่มการแคชลงในคุณลักษณะพร็อกซีย้อนกลับ ฉันมองไปรอบ ๆ แต่ไม่พบข้อมูลมากนัก ฉันต้องการตั้งค่า Nginx เป็น reverse proxy แคชหน้า Apache / Django: เพื่อให้คำขอพร็อกซี Nginx สำหรับหน้าแบบไดนามิกบางส่วน (แต่ไม่ใช่ทั้งหมด) ไปยัง Apache จากนั้นแคชหน้าที่สร้างขึ้นและให้บริการการร้องขอหน้าถัดไปจากแคชเหล่านั้น เป็นการดีที่ฉันต้องการทำให้แคชใช้ไม่ได้ใน 2 วิธี: ตั้งวันที่หมดอายุในรายการที่แคช เพื่อทำให้รายการที่แคชไว้ใช้ไม่ได้อย่างชัดเจน เช่นถ้าแบ็คเอนด์ Django ของฉันมีการอัพเดทข้อมูลบางอย่างฉันต้องการบอก Nginx ให้ทำการแคชของหน้าเว็บที่ได้รับผลกระทบ เป็นไปได้ไหมที่จะตั้งให้ Nginx ทำเช่นนั้น? อย่างไร?

5
อะไรคือความแตกต่างระหว่าง Load Balancer และ Reverse Proxy?
ฉันไม่ชัดเจนเกี่ยวกับความแตกต่างระหว่าง Load Balancer และ Reverse Proxy พวกเขาทั้งสองดูเหมือนจะมีพฤติกรรมเหมือนกัน: การกระจายคำขอขาเข้าไปยังเซิร์ฟเวอร์แบ็กเอนด์

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 …

4
IIS สามารถกำหนดค่าให้ส่งต่อคำขอไปยังเว็บเซิร์ฟเวอร์อื่นได้หรือไม่
ฉันมีหลายเว็บไซต์ที่ติดตั้งบนเซิร์ฟเวอร์ IIS 6 หนึ่งตัวที่โดดเด่นโดย Host Header อย่างไรก็ตามฉันต้องการมีหนึ่งในเว็บไซต์ที่ให้บริการโดยเซิร์ฟเวอร์ Linux / Apache บนเครือข่ายของฉัน ฉันจำเป็นต้องใช้ reverse proxy add-in สำหรับ IIS หรือมีวิธีง่าย ๆ ในการแจ้งให้ IIS ส่งต่อคำขอทั้งหมดไปยังเซิร์ฟเวอร์อื่นหรือไม่

2
การตอบกลับอัปสตรีมจะถูกบัฟเฟอร์ในไฟล์ชั่วคราว
ฉันมี (ข้อมูลที่ซับซ้อนที่ซับซ้อนส่วนหน้า) ค่อนข้างใหญ่และช้าโปรแกรมประยุกต์บนเว็บในการสร้างRoRและให้บริการโดยPumaมีnginxพร็อกซี่เป็นแบบย้อนกลับ เมื่อดูที่nginxบันทึกข้อผิดพลาดฉันเห็นรายการบางอย่างเช่น: 2014/04/08 09:46:08 [warn] 20058#0: *819237 an upstream response is buffered to a temporary file /var/lib/nginx/proxy/8/47/0000038478 while reading upstream, client: 5.144.169.242, server: engagement-console.foo.it, request: "GET /elements/pending?customer_id=2&page=2 HTTP/1.0", upstream: "http://unix:///home/deployer/apps/conversationflow/shared/sockets/puma.sock:/elements/pending?customer_id=2&page=2", host: "ec.reputationmonitor.it", referrer: "http://ec.foo.it/elements/pending?customer_id=2&page=3" ฉันค่อนข้างอยากรู้อยากเห็นเนื่องจากไม่น่าเป็นไปได้มากที่หน้าเว็บจะยังคงเหมือนเดิมสำหรับผู้ใช้ที่แตกต่างกันและการโต้ตอบของผู้ใช้ที่แตกต่างกันและฉันจะไม่คิดว่าการบัฟเฟอร์การตอบสนองบนดิสก์เป็นสิ่งจำเป็น / มีประโยชน์ ฉันรู้proxy_max_temp_file_sizeและตั้งค่าเป็น 0 แต่ดูเหมือนว่าฉันจะอึดอัดเล็กน้อย (พร็อกซีของฉันพยายามที่จะบัฟเฟอร์ แต่ไม่มีไฟล์ที่จะบัฟเฟอร์ไปที่ ... วิธีที่จะเร็วขึ้น?) คำถามของฉันคือ: ฉันจะลบ [เตือน] และหลีกเลี่ยงการตอบกลับบัฟเฟอร์ได้อย่างไร …

3
nginx real_ip_header และ X-Forwarded- สำหรับดูเหมือนว่าผิด
คำอธิบายวิกิพีเดียของส่วนหัว HTTP X-Forwarded-Forคือ: X-Forwarded- สำหรับ: client1, proxy1, proxy2, ... เอกสารประกอบ nginx สำหรับคำสั่งการreal_ip_headerอ่านส่วนหนึ่ง: คำสั่งนี้ตั้งชื่อของส่วนหัวที่ใช้สำหรับการถ่ายโอนที่อยู่ IP ทดแทน ในกรณีของ X-Forwarded-For โมดูลนี้ใช้IP สุดท้ายในส่วนหัว X-Forwarded-For เพื่อทดแทน [เน้นเหมือง] คำอธิบายทั้งสองนี้ดูขัดแย้งกัน ในสถานการณ์สมมติของเราX-Forwarded-Forส่วนหัวเป็นไปตามที่อธิบายไว้ - ที่อยู่ IP "ของจริง" ของลูกค้าเป็นรายการทางซ้ายสุด ในทำนองเดียวกันพฤติกรรมของ nginx คือการใช้ค่าขวาสุด - ซึ่งแน่นอนว่าเป็นเพียงหนึ่งในพร็อกซีเซิร์ฟเวอร์ของเรา ความเข้าใจของฉันX-Real-IPคือมันควรจะใช้เพื่อกำหนดที่อยู่ IP ของลูกค้าที่แท้จริง - ไม่ใช่พร็อกซี ฉันขาดอะไรไปหรือว่าเป็นบั๊กใน nginx และนอกเหนือจากนั้นไม่มีใครมีคำแนะนำสำหรับวิธีการทำให้X-Real-IPส่วนหัวแสดงค่าซ้ายสุดตามที่ระบุโดยคำจำกัดความของX-Forwarded-For?

3
วิธีจัดการ URL ที่สัมพันธ์กันอย่างถูกต้องด้วย reverse proxy
ฉันมีการตั้งค่าพร็อกซีย้อนกลับดังนี้ใน Apache: เซิร์ฟเวอร์ A พร้อมที่อยู่ www.example.com/folder เป็น reverse proxy server มันแมปไปที่: เซิร์ฟเวอร์ B พร้อมที่อยู่ test.madeupurl.com งานประเภทนี้ แต่ปัญหาที่ฉันมีคือใน www.example.com/folder ลิงก์ที่เกี่ยวข้องทั้งหมดนั้นอยู่ในรูปแบบ www.example.com/css/examplefilename.css แทนที่จะเป็น www.example.com/folder/css/examplefilename CSS ฉันจะแก้ไขได้อย่างไร จนถึงตอนนี้พร็อกซีย้อนกลับของฉันมีสิ่งนี้บนเซิร์ฟเวอร์ A (www.example.com): <Location /folder> ProxyPass http://test.madeupurl.com ProxyPassReverse http://test.madeupurl.com </Location>

3
ทำไมการตั้งค่า Nginx เป็น reverse proxy เป็นความคิดที่ดี?
ฉันมีไซต์ Django ที่ทำงานบน Gunicorn ด้วย reverse proxy ผ่าน Nginx Nginx ไม่ใช่แค่ค่าใช้จ่ายที่ไม่จำเป็นเพิ่มขึ้นใช่ไหม? การเพิ่มที่ด้านบนของ Gunicorn ช่วยได้อย่างไร

2
กำหนดค่า Nginx เป็น reverse proxy ด้วย upstream SSL
ฉันพยายามกำหนดค่าเซิร์ฟเวอร์ Nginx เป็น reverse proxy ดังนั้นการร้องขอ https ที่ได้รับจากลูกค้าจะถูกส่งต่อไปยังเซิร์ฟเวอร์ upstream ผ่านทาง https เช่นกัน นี่คือการกำหนดค่าที่ฉันใช้: http { # enable reverse proxy proxy_redirect off; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwared-For $proxy_add_x_forwarded_for; upstream streaming_example_com { server WEBSERVER_IP:443; } server { listen 443 default ssl; server_name streaming.example.com; access_log /tmp/nginx_reverse_access.log; error_log /tmp/nginx_reverse_error.log; root /usr/local/nginx/html; …

5
Nginx vs Apache เป็น reverse proxy ซึ่งเป็นตัวเลือกหนึ่ง
อาจมีคำถามประเภทนี้ที่นี่ แต่ฉันไม่พบสิ่งใดที่ตรงกับคำถามของฉัน ได้ยินว่าประสิทธิภาพของ nginx ค่อนข้างน่าประทับใจ แต่ Apache มีเอกสารเพิ่มเติมชุมชน (อ่าน: ผู้เชี่ยวชาญ) เพื่อรับความช่วยเหลือ ตอนนี้สิ่งที่ฉันต้องการทราบว่าเว็บเซิร์ฟเวอร์ทั้งสองเปรียบเทียบในแง่ของประสิทธิภาพความง่ายในการกำหนดค่าระดับการปรับแต่ง ฯลฯ ย้อนกลับเป็นเซิร์ฟเวอร์ PROXY ในสภาพแวดล้อม vps หรือไม่? ฉันยังคงชั่งน้ำหนักระหว่างสองรายการสำหรับเว็บแอป ruby ​​(ไม่ใช่ ROR) ที่แสดงพร้อมกับเว็บเซิร์ฟเวอร์ (หนึ่งใน ruby) คำตอบเฉพาะจะได้รับการชื่นชมมาก คำตอบทั่วไปที่ไม่แตะต้องส่วนทับทิมก็โอเค ฉันยังคงไม่มีเสียงในการบริหารเว็บเซิร์ฟเวอร์

7
มีชื่อโฮสต์เสมือนพร็อกซีย้อนกลับ SSH ที่ใช้ชื่อหรือไม่
ฉันชอบพร็อกซีย้อนกลับ HTTP ในสภาพแวดล้อมการพัฒนาของเราค่อนข้างมากและพบว่าพร็อกซีย้อนกลับโฮสต์เสมือนที่ใช้ DNS มีประโยชน์มาก การเปิดเพียงพอร์ตเดียว (และพอร์ตมาตรฐาน) บนไฟร์วอลล์ทำให้การจัดการทำได้ง่ายขึ้นมาก ฉันต้องการค้นหาสิ่งที่คล้ายกับการเชื่อมต่อ SSH แต่ไม่มีโชคมาก ฉันไม่ต้องการเพียงแค่ใช้ SSH tunneling เนื่องจากต้องเปิดช่วงพอร์ตอื่นที่ไม่ใช่มาตรฐาน มีอะไรอีกบ้างที่สามารถทำสิ่งนี้ได้? HAProxy ทำเช่นนี้ได้หรือไม่?

4
ฉันจะดีบัก nginx มากกว่าบันทึกข้อผิดพลาดได้อย่างไร
ขณะนี้ฉันได้รับ HTTP ที่มีขนาดใหญ่พอสมควรในขณะนี้และทำให้ nginx reverse proxy ของฉันสร้างเกตเวย์ Bad 502 ฉันมีเซิร์ฟเวอร์ส่วนหน้าใช้ nginx เป็นพร็อกซีเซิร์ฟเวอร์ backend ของฉัน แต่มันเพิ่งได้รับconnect() failed (110: Connection timed out) while connecting to upstreamข้อผิดพลาดมากมาย ตันของพวกเขา ถ้าฉันข้ามพร็อกซีเซิร์ฟเวอร์เพื่อเชื่อมต่อกับแบ็กเอนด์ฉันสามารถเรียกใช้ไซต์ได้ดีดังนั้นฉันรู้ว่ามันอยู่ในพร็อกซีย้อนกลับที่อื่น อย่างไรก็ตามฉันไม่รู้ว่าจะระบุได้อย่างไรว่าทำไมถึงกำหนดเวลา ความช่วยเหลือใด ๆ ใช้งาน nginx 1.2.3 บน CentOS 6.2

3
การใช้ Https ระหว่าง Apache Loadbalancer กับแบ็กเอนด์
ฉันใช้เซิร์ฟเวอร์ apache (2.4) ที่กำหนดค่าเป็น loadbalancer หน้าเซิร์ฟเวอร์ apache 2 ตัว มันทำงานได้ดีเมื่อฉันใช้การเชื่อมต่อ http ระหว่าง loadbalancer และแบ็กเอนด์อย่างไรก็ตามการใช้ https ไม่ทำงาน การกำหนดค่าของ loadbalancer: SSLProxyEngine on SSLProxyVerify none SSLProxyCheckPeerCN off <Proxy balancer://testcluster> BalancerMember https://[Backend1]:443/test BalancerMember https://[Backend2]:443/test </Proxy> ProxyPass /test balancer://testcluster แบ็กเอนด์มีใบรับรองที่ลงชื่อด้วยตนเองเท่านั้นในตอนนี้ซึ่งเป็นสาเหตุที่การตรวจสอบใบรับรองถูกปิดใช้งาน บันทึกข้อผิดพลาดบน loadbalancer มีดังต่อไปนี้: [proxy:error] [pid 31202:tid 140325875570432] (502)Unknown error 502: [client ...] AH01084: pass request …

3
พร็อกซี HTTPS ร้องขอไปยัง HTTP backend ด้วย NGINX
ฉันได้กำหนดค่า nginx ให้เป็นเว็บเซิร์ฟเวอร์ที่มองเห็นจากภายนอกซึ่งพูดถึงแบ็กเอนด์ผ่าน HTTP สถานการณ์ที่ฉันต้องการบรรลุคือ: ไคลเอนต์ทำการร้องขอ HTTP ไปยัง nginx ซึ่งเปลี่ยนเส้นทางไปยัง URL เดียวกัน แต่ใช้ผ่าน HTTPS พร็อกซี nginx ร้องขอผ่าน HTTP ไปยังส่วนหลัง nginx รับการตอบสนองจากแบ็กเอนด์ผ่าน HTTP nginx ส่งผ่านสิ่งนี้กลับไปยังลูกค้าผ่าน HTTPS การกำหนดค่าปัจจุบันของฉัน (ที่แบ็คเอนด์ถูกกำหนดค่าอย่างถูกต้อง) คือ: เซิร์ฟเวอร์ { ฟัง 80; server_name localhost; ตำแหน่ง ~. * { proxy_pass http: // backend; proxy_redirect http: // backend https: // $ host; …

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