Score:1

Nginx แปลงคำขอ POST เป็นคำขอ GET ในขณะที่ proxy_pass

ธง es

ฉันมี 3 เซิร์ฟเวอร์: เอ บี ซี. รายละเอียดคือ:

  1. เซิร์ฟเวอร์ A: เซิร์ฟเวอร์ NGINX, URL: https://test1.example.com
  2. เซิร์ฟเวอร์ B: เซิร์ฟเวอร์ NGINX ที่โฮสต์แอปพลิเคชันเว็บ NodeJS, URL: http://test2.example.com
  3. เซิร์ฟเวอร์ C: เซิร์ฟเวอร์ Apache2 ที่โฮสต์ Django Web Application, URL: http://test3.example.com

เซิร์ฟเวอร์ A (เซิร์ฟเวอร์ NGINX) หันหน้าเข้าหาเซิร์ฟเวอร์สาธารณะที่ทำหน้าที่เป็นโหลดบาลานเซอร์โดยใช้ proxy_pass เซิร์ฟเวอร์ B (เซิร์ฟเวอร์ NGINX) กำลังมีแบบฟอร์มและส่งคำขอผ่าน POST ไปยังเซิร์ฟเวอร์ C (เซิร์ฟเวอร์ UWSGI Django โดยใช้ Apache2) คำขอมาจากเซิร์ฟเวอร์ B พร้อม url: https://test1.example.com/register เป็นเซิร์ฟเวอร์ C แต่เซิร์ฟเวอร์ A กำลังแปลงเป็นคำขอ GET

ดังนั้นฉันจึงได้รับ 2 คำขอบันทึกหนึ่งด้วย POST และอีกอันด้วย GET ด้วยเส้นทางเดียวกัน "/ ลงทะเบียน"

การตั้งค่าจะแสดงในรูป (ไดอะแกรมอยู่ที่ส่วนท้ายของโพสต์)

การกำหนดค่ามีดังนี้:

  1. เซิร์ฟเวอร์ A:

    เซิร์ฟเวอร์ {
    
       ฟัง 443 ssl http2;
       ฟัง [::]:443 ssl http2;
       server_name test1.example.com;
    
        ssl_certificate /etc/ssl/test1/test1.example.com.crt;
        ssl_certificate_key /etc/ssl/test1/test1.example.com.key;
    
       # การกำหนดค่าพร็อกซี/ตัวโหลดบาลานซ์
    
       #ทดสอบคำขอ'
    
            ที่ตั้ง / {
              proxy_pass http://test2.example.com;
            }
    
            สถานที่ /ลงทะเบียน/{
                    proxy_pass http://test3.example.com;
            }
    }
    
  2. เซิร์ฟเวอร์ B:

    เซิร์ฟเวอร์ {
    
        ฟัง 80 default_server;
    
        ฟัง [::]:80 default_server;
    
        รูท /var/www/html;
    
        # เพิ่ม index.php ในรายการหากคุณใช้ PHP
        ดัชนี index.html index.htm;
    
        server_name test2.example.com;
    
        ที่ตั้ง / {
                #try_files $uri $uri/ =404;
                 try_files $uri $uri/ /index.html;
        }
    
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;
    

    }

  3. เซิร์ฟเวอร์ ค:

    <โฮสต์เสมือน *:80>
    ชื่อเซิร์ฟเวอร์ test3.example.com
    ผู้ดูแลระบบเซิร์ฟเวอร์ [email protected]
    DocumentRoot /var/www/ทดสอบ
    
    นามแฝง /static/ /var/www/test/webapp/static/
    นามแฝง /media/ /var/www/test/media/
    
    WSGIScriptAlias ​​/ /var/www/test/webapp/wsgi.py
    WSGIDaemonProcess cdac.in python-path=/var/www/test \
        python-home=/var/www/test/venv กระบวนการ=5 เธรด=8
    WSGIProcessGroup cdac.in
    <ไดเรกทอรี /var/www/test/webapp/>
        ตัวเลือก -ดัชนี
        คำสั่งปฏิเสธอนุญาต
        อนุญาตจากทั้งหมด
        ต้องได้รับอนุญาตทั้งหมด
    </ไดเรกทอรี>
    
    ข้อมูล LogLevel
    
    # PROJECT_NAME ใช้เพื่อแยกไฟล์บันทึกของแอปพลิเคชันนี้
    ErrorLog /var/log/apache2/error.log
    รวม CustomLog /var/log/apache2/access.log
    

ฉันจะไปผิดที่ไหน

ไดอะแกรมการตั้งค่า

djdomi avatar
za flag
หลังจากค้นหาเล็กน้อย ฉันพบ https://serverfault.com/questions/312111/how-do-i-get-nginx-to-forward-http-post-requests-via-rewrite อาจช่วยคุณได้
Amarjeet Sharma avatar
es flag
@djdomi พยายามไม่ทำงาน

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา