วิธีการใช้ Nginx เป็นพร็อกซีเซิร์ฟเวอร์ HTTP / HTTPS [ปิด]


16

เป็นไปได้หรือไม่ที่จะใช้ Nginx เป็นพร็อกซี HTTP / HTTPS

คำตอบ:


14

หลังจากการทดสอบบางอย่างฉันได้พบกับฉันสำหรับการกำหนดค่าต่อไปนี้

server {
  server_name ~^(www\.)?(?<domain>.+)$;
  access_log /var/log/nginx/proxy.access.log main;
  error_log /var/log/nginx/proxy.error.log crit;
  listen 10.255.1.13:8080;
  resolver 8.8.8.8;
  location / {
    proxy_pass http://$domain;
    proxy_redirect off;
    proxy_set_header Host $host;
    # Optional headers 
    # proxy_set_header X-Real-IP $remote_addr;
    # proxy_set_header X-Forwarded-For
    # $proxy_add_x_forwarded_for;
  }
}

การกำหนดค่านี้ใช้งานได้กับ HTTP เท่านั้นไม่ใช่สำหรับ HTTPS


4
เยี่ยมมาก! ไม่กี่คำใบ้ listen ... default_server1: 2: หรือserver_name "" 2:server_name _ proxy_pass $scheme://$http_hostข้อ จำกัด : การ poxying ไปยัง upstreams ด้วยพอร์ต 80 เท่านั้น ไม่ประมวลผลการเปลี่ยนเส้นทางตัวเอง
Alexander Azarov

$ โครงการจะเป็นประโยชน์เฉพาะถ้าฟัง vhost บน https ยัง - แต่แล้วคุณมีคนที่อยู่ในความเสี่ยงกลางและ https ข้อผิดพลาดใบรับรองการโต้แย้งกับ ... ทั้งสองมีปัญหาด้านความปลอดภัยขนาดใหญ่ที่จะต้องพิจารณา
anthonysomerset

8

ฉันคิดว่าคำตอบสั้น ๆ คือไม่มันไม่ได้เขียนขึ้นสำหรับการส่งต่อพร็อกซี่

UPDATE

เพื่อชี้แจงคำสั่งของฉันด้านบน:

NGINX ไม่เคยเขียนด้วยการคาดเดาล่วงหน้า - ในขณะที่ jerry สามารถกำหนดค่าให้ทำสิ่งที่คุณต้องการได้จากระยะไกลคุณจะต้องเข้าใจข้อ จำกัด ต่อไปนี้:

  • การสนับสนุนแคชเกือบจะไม่มีอยู่ (หนึ่งในเหตุผลหลักสำหรับการใช้พร็อกซี)
  • ไม่สามารถใช้เพื่อสิ่งอื่นใดนอกจากการรับส่งข้อมูลพอร์ต 80 (เช่นไม่มีการลงชื่อเข้าใช้กล่อง cPanel ผ่านมัน)
  • ไม่รองรับปริมาณการใช้ SSL
  • ไม่รองรับส่วนหัวพร็อกซีมาตรฐานและส่วนหัวของแคช HTTP (ความเข้าใจของฉันคือสิ่งเหล่านี้เพิ่งผ่านไปได้
  • ไม่รองรับโปรโตคอลอื่น ๆ ที่สนับสนุนพร็อกซีเซิร์ฟเวอร์ - เช่น VPN ฯลฯ

ข้อควรพิจารณาอื่น ๆ ที่เป็นไปได้ที่ไม่เป็นที่รู้จักในเวลานี้:

  • เป็นไปได้ที่จะใช้พร็อกซีของคุณเนื่องจากไม่มีความสามารถที่แท้จริงในการควบคุมการเข้าถึง / การรับรองความถูกต้องแบบละเอียด (nginx มีการสนับสนุนวิธีการควบคุมการเข้าถึงที่แตกต่างกัน แต่ก็ไม่ชัดเจนว่ามันจะทำงานอย่างไรในบริบทพร็อกซี
  • ความเสี่ยงด้านความปลอดภัยที่อาจเกิดขึ้นกับเครื่องที่ติดตั้ง nginx เนื่องจากอาจมีช่องโหว่ด้านความปลอดภัยที่เป็นไปได้ซึ่งไม่ได้พิจารณาเนื่องจากใช้ในลักษณะที่ไม่ได้ออกแบบมาให้ทำงาน

ดูตัวอย่างได้ที่: ef.gy/using-nginx-as-a-proxy-server
kkurian

บางทีอาจจะเป็นคำตอบของฉันควรจะได้รับชัดเจนมันไม่ได้ออกแบบมาเพื่อทำไปข้างหน้าพร็อกซี - ความพยายามของลิงแพทช์จะไม่ให้การสนับสนุนพร็อกซีเต็มรูปแบบเช่นการร้องขอไปยังพร็อกซีไม่ได้มาตรฐาน (พอร์ต 80) พอร์ต
anthonysomerset

3

หากคุณต้องการใช้พร็อกซี HTTP / HTTPS คุณควรใช้ Squid มันถูกเขียนขึ้นเพื่อทำสิ่งนั้นอย่างแน่นอน Nginx ถูกเขียนขึ้นเพื่อทำหน้าที่เป็น reverse proxy และ load balancer แต่ไม่ใช่ proxy ข้างหน้า


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