พร็อกซีเซิร์ฟเวอร์ของฉันทำงานบน ip A และนี่คือวิธีที่ผู้ใช้เข้าถึงบริการเว็บของฉัน การกำหนดค่า nginx จะเปลี่ยนเส้นทางไปยังเครื่องเสมือนบน ip B
สำหรับพร็อกซีเซิร์ฟเวอร์บน IP A ฉันมีสิ่งนี้ในเว็บไซต์ของฉัน
server {
listen 443;
ssl on;
ssl_certificate nginx.pem;
ssl_certificate_key nginx.key;
client_max_body_size 200M;
server_name localhost 127.0.0.1;
server_name_in_redirect off;
location / {
proxy_pass http://10.10.0.59:80;
proxy_redirect http://10.10.0.59:80/ /;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
rewrite ^(.*) https://$http_host$1 permanent;
server_name localhost 127.0.0.1;
server_name_in_redirect off;
location / {
proxy_pass http://10.10.0.59:80;
proxy_redirect http://10.10.0.59:80/ /;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
proxy_redirect
ถูกนำมาจากวิธีการที่ฉันจะได้รับ Nginx เพื่อส่งต่อการร้องขอ HTTP POST ผ่านเขียน?
ทุกสิ่งที่เข้าถึงไอพีสาธารณะจะโดน 443 เพราะเขียนใหม่ ภายในเราจะส่งต่อไปยัง 80 บนเครื่องเสมือน
แต่เมื่อฉันเรียกใช้สคริปต์ไพ ธ อนเช่นสคริปต์ด้านล่างเพื่อทดสอบการกำหนดค่าของเรา
import requests
data = {'username': '....', 'password': '.....'}
url = 'http://IP_A/api/service/signup'
res = requests.post(url, data=data, verify=False)
print res
print res.json
print res.status_code
print res.headers
405 Method Not Allowed
ฉันได้รับ ใน nginx เราพบว่าเมื่อมันเข้าสู่เซิร์ฟเวอร์ภายใน nginx ภายในได้รับการGET
ร้องขอถึงแม้ว่าในส่วนหัวดั้งเดิมเราได้ทำPOST
(สิ่งนี้ถูกแสดงในสคริปต์ Python)
ดังนั้นดูเหมือนว่าการเขียนซ้ำมีปัญหา ความคิดวิธีการแก้ไขปัญหานี้? เมื่อฉันแสดงความคิดเห็นเขียนใหม่มันฮิต 80 แน่นอนและมันผ่าน เนื่องจากการเขียนซ้ำสามารถพูดคุยกับเซิร์ฟเวอร์ภายในของเราได้ดังนั้นการเขียนใหม่จึงไม่มีปัญหา มันเป็นแค่การเขียนซ้ำที่ลดลงPOST
ไปGET
ขอขอบคุณ!
(สิ่งนี้จะถูกถามในฟอรัม Nginx เพราะนี่เป็นตัวบล็อกที่สำคัญ ... )
PUT
,POST
, ,DELETE
GET
ในการตั้งค่าก่อนหน้าของฉันฉันไม่มีพร็อกซีพิเศษนี้ที่ด้านหน้าให้บริการฝูงชน ฉันมีการกำหนดค่าเดียวกันบนเซิร์ฟเวอร์ภายในเดียวกัน (เซิร์ฟเวอร์ทดสอบของเรา) มันใช้งานได้ดี